C++ 如何创建结构并同时初始化它?

C++ 如何创建结构并同时初始化它?,c++,C++,结构的定义如下: struct Edge { int weight; Vertex* v1; Vertex* v2; }; Edge e(9, v1, v2); 我需要做一些类似的事情 new Edges(v1, v2, v3); 但这只能通过“类”和使用ctor来实现。如何创建struct的新元素并同时初始化它 谢谢代码>非常有限,但C++中只存在结构> 和类< /代码>。 在类中所有成员默认为私有,在结构中所有成员默认为公有 从struct继承默认为pub

结构的定义如下:

 struct Edge {
    int weight;
    Vertex* v1;
    Vertex* v2;
  };
Edge e(9, v1, v2);
我需要做一些类似的事情

new Edges(v1, v2, v3);
但这只能通过“类”和使用ctor来实现。如何创建struct的新元素并同时初始化它


谢谢Stult编写构造函数。C <代码>结构>代码>非常有限,但C++中只存在<代码>结构> <代码>和<代码>类< /代码>。
  • 类中
    所有成员默认为
    私有
    ,在
    结构中
    所有成员默认为
    公有
  • struct
    继承默认为
    public
    ,而
    class
    默认为
    private

  • 感谢@gil_bz和@icepack

    您需要创建一个参数化构造函数。这样做

    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;
        }
    };
    
    然后创建如下对象:

     struct Edge {
        int weight;
        Vertex* v1;
        Vertex* v2;
      };
    
    Edge e(9, v1, v2);
    

    为什么要使用
    new
    ?无论如何,您正在寻找聚合初始化。我尝试了一些类似于v[v1]的操作。edges.push_back(新边(v1,v2,v3));边定义为列表边;更具体地说,C++中的结构和类之间没有区别,除了成员的默认可访问性(结构公共的、私有的类)。对于
    class
    struct
    的默认继承是
    public
    而不是
    private
    struct
    class
    之间的差异并不完全正确。