該結構的定義如下:如何創建一個結構並同時初始化它?
struct Edge {
int weight;
Vertex* v1;
Vertex* v2;
};
我需要做的是這樣
new Edges(v1, v2, v3);
但可能只能用一個「類」,用構造函數來完成。我怎樣才能創建一個結構的新元素,並在同一時間初始化它?
謝謝!
該結構的定義如下:如何創建一個結構並同時初始化它?
struct Edge {
int weight;
Vertex* v1;
Vertex* v2;
};
我需要做的是這樣
new Edges(v1, v2, v3);
但可能只能用一個「類」,用構造函數來完成。我怎樣才能創建一個結構的新元素,並在同一時間初始化它?
謝謝!
你也可以在C++中編寫一個struct
的構造函數。 C struct
是非常有限的,但是在C++中,只有2 differences在struct
和class
之間。
class
所有成員都默認private
,在struct
所有成員都默認public
。struct
默認繼承public
而class
默認爲private
感謝@gil_bz和@icepack
更具體地說,C++中的結構和類之間沒有區別,除了成員的默認可訪問性(public爲結構體,private爲類) –
從'struct'默認繼承是'public'而不是'private' 'class'。 – SomeWittyUsername
'struct'和'class'之間的區別並不完全正確。 – juanchopanza
你需要創建一個參數的構造函數。做這種方式
struct Edge
{
int weight;
Vertex* v1;
Vertex* v2;
Edge(int a_weight, Vertex *a_v1, Vertex *a_v2)
{
weight = a_weight;
v1 = a_v1;
v2 = a_v2;
}
};
那麼像這樣創建對象:
Edge e(9, v1, v2);
爲什麼要用'new'呢?無論如何,你正在尋找聚合初始化。 – chris
我試圖做一些像v [v1] .edges.push_back(new Edges(v1,v2,v3));邊緣被定義爲列表邊緣; –
JASON