好的,所以Node不是你的數組的名字。這是應該包含數組的用戶定義類型的名稱。但是,您的節點不包含數組。它包含一輛車,名爲a_v。我假設a_v應該代表一組車輛。因此,您需要分配數組。事情是這樣的:
struct Node {
Vehicle a_v[AMOUNT];
};
如果你不知道在編譯時你要多大的陣列是這樣做,那麼他們必須是動態分配的,就像這樣:
struct Node {
Vehicle* a_v;
Node() {
a_v = new Vehicle[AMOUNT];
}
};
如果它是動態分配的,那麼它也必須被釋放:
struct Node {
Vehicle* a_v;
Node() {
a_v = new Vehicle[AMOUNT];
}
~Node() {
delete[] a_v;
}
};
,如果它是動態分配的,你需要添加規定複製或不能進行復印:
struct Node {
Vehicle* a_v;
Node() {
a_v = new Vehicle[AMOUNT];
}
~Node() {
delete[] a_v;
}
// Disable copies (with C++11 support):
Node(const Node&) = delete;
Node& operator=(const Node&) = delete;
// Disable copies (without C++11 support) by making them private and not defining them.
private:
Node(const Node&);
Node& operator=(const Node&);
};
然後訪問工具之一,你需要做這樣的:
Node n; // Declare a node, which contains an array of Vehicles
n.a_v[cont] = v; // Copy a Vehicle into the array of Vehicles
但是請注意,如果你在這個函數聲明節點的實例,那麼它是本地一旦你的功能結束,它就會超出範圍。如果你希望它繼續超越函數調用,你需要將Node實例聲明爲你的Table的成員。
class Table
{
private:
Node n;
};
最後,正如其他人所建議的那樣,我強烈建議您閱讀C++書籍來學習C++。我個人的建議是this book(第5版,不要買第6或7號 - 這些版本的作者是可怕的)。
'Node'不是一個數組,它甚至不是一個變量,它是一個類型。你可以使用*類型來聲明數組或變量,但是它本身的類型不是數組或變量。你需要直接理解這些概念。 – john 2013-04-26 13:33:59