Array! = Zeiger.
error: invalid array assignment
node->point = p;
Hier ist der richtige Weg, um das Array zu kopieren:
class Node {
public:
std::array<float,3> point;
};
std::array<float,3> p = {34.0f, 90.0f, 10.0f};
node->point = p;
:
std::copy(std::begin(p),std::end(p), std::begin(node->point));
Wenn Sie die Größe des Arrays bei der Kompilierung kennen, sollten Sie std::array
verwenden
Sie können das Array auch über Konstruktor initialisieren und point
als private
Datenelement lassen :
// Ctor
Node(std::array<float,3> p) { point = p; }
// Calling
Node *node = new Node({34.0f, 90.0f, 10.0f});
// Or
std::array<float,3> p = {34.0f, 90.0f, 10.0f};
Node *node = new Node(p);
Andernfalls, wenn Sie die Größe des Arrays zur Laufzeit wählen wollen, sollten Sie std::vector
verwenden.
Verwenden 'std :: array' statt –
StoryTeller
Was Konstrukteurs passiert? Und mit den richtigen * Speicherdauern *? – WhiZTiM
Sie haben ein Speicherleck. – nwp