如何创建一个结构并同时初始化它?

时间:2012-12-11 07:03:37

标签: c++

结构的定义如下:

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

我需要做类似

的事情
new Edges(v1, v2, v3);

但这只能通过“类”和使用ctor来完成。如何创建struct的新元素并同时对其进行初始化?

谢谢!

2 个答案:

答案 0 :(得分:2)

您也可以在C ++中为struct编写构造函数。 C struct非常有限,但在C ++中,structclass之间仅存在2 differences

  1. class private所有成员默认为structpublic所有成员默认为struct
  2. public继承默认为classprivate默认为{{1}}
  3. 感谢@gil_bz和@icepack

答案 1 :(得分: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);