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的新元素并同时初始化它
谢谢在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
之间的差异并不完全正确。