2012-12-11 71 views
0

該結構的定義如下:如何創建一個結構並同時初始化它?

struct Edge { 
    int weight; 
    Vertex* v1; 
    Vertex* v2; 
    }; 

我需要做的是這樣

new Edges(v1, v2, v3); 

但可能只能用一個「類」,用構造函數來完成。我怎樣才能創建一個結構的新元素,並在同一時間初始化它?

謝謝!

+2

爲什麼要用'new'呢?無論如何,你正在尋找聚合初始化。 – chris

+0

我試圖做一些像v [v1] .edges.push_back(new Edges(v1,v2,v3));邊緣被定義爲列表邊緣; – JASON

回答

2

你也可以在C++中編寫一個struct的構造函數。 C struct是非常有限的,但是在C++中,只有2 differencesstructclass之間。

  1. class所有成員都默認private,在struct所有成員都默認public
  2. struct默認繼承publicclass默認爲private

感謝@gil_bz和@icepack

+0

更具體地說,C++中的結構和類之間沒有區別,除了成員的默認可訪問性(public爲結構體,private爲類) –

+1

從'struct'默認繼承是'public'而不是'private' 'class'。 – SomeWittyUsername

+0

'struct'和'class'之間的區別並不完全正確。 – juanchopanza

0

你需要創建一個參數的構造函數。做這種方式

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