2014-02-10 154 views
1

我有两个结构:初始化结构是另一种结构的成员ISO C++

struct port 
{ 
    bool isOutput; 
    bool isConnected; 
    int connwires; 
}; 

struct node 
{ 
    port p; 
    vector<Wire*> w; 
}; 

而且我有。 的问题是如何初始化通过创建所有n节点结构的端口成员(P):在类的构造

nodes= new node[n]; 

声明。

(I被限定端口结构是这样的:

struct port 
{ 
    bool isOutput=0; 
    bool isConnected=0; 
    int connwires=0; 
}; 

但其在 “ISO C++” 无效)

感谢。

+2

“struct port”的默认构造函数(但不是编译器提供的默认构造函数)? –

+0

数据成员的类内初始化是一个C++ 11功能。对于C++ 03及更低版本,您需要一个构造函数来初始化* member initializer-list *中的数据成员。 – 0x499602D2

+1

后者被称为“在类初始化中”,并且从非常量静态成员的C++ 11开始它也被允许。 – Manu343726

回答

4

您需要为port提供一个默认的构造函数初始化它的成员自动

struct port 
{ 
    port() : 
     isOutput(false), 
     isConnected(false), 
     connwires(0) 
    { } 

    bool isOutput; 
    bool isConnected; 
    int connwires; 
}; 

注意你在过去的代码是有效的,并不会因为你的C++ 11的期望。

+0

工作!谢谢。 – user3237431