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;
}