Wie kann ich Operatoren definieren, damit ein Array benutzerdefinierter Typen in ein Array primitiver Typen umgewandelt werden kann?

Ich gebe den folgenden Code ein, um meine Frage zu veranschaulichen:

#include <vector>

struct Complex
{
     int a, b, c;

     Complex() : a(3), b(4), c(10) {}

     operator int() const {  return a+b+c; }
};

int main()
{
   Complex abc;
   int value = (abc);
   Complex def;
   def.a = 20;
   int value2 = (def);

   std::vector<Complex> ar;
   ar.push_back(abc);
   ar.push_back(def);

   std::vector<int> ar2;
   ar2.push_back(abc);
   ar2.push_back(def);

   std::vector<int> ar3;
   ar3 = (ar);
}

Dies wird aufgrund des Ausdrucks @ nicht kompilierar3 = (ar). Ich habe einen Konvertierungsoperator angegeben, damit dasComplex class kann in where @ verwendet werdint wird erwartet. Kann ich es auch zum Zuweisen eines Arrays von @ verwendeComplex Objekte zu einem Array vonint?

Ich habe versucht, einen Nicht-Mitglied-Konvertierungsoperator für ein Array von @ zu deklariereComplex, aber das ist nicht erlaubt:

void std::vector<int> operator = (std::vector<Complex> complexArray)
{
    std::vector<int> abc;
    for(int i=0; i<complexArray.size(); i++)
     abc.push_back(complexArray[i]);
    return abc;
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage