gpt4 book ai didi

c++ - 为什么在ctor中不允许访问成员对象的成员?

转载 作者:行者123 更新时间:2023-12-01 14:35:44 25 4
gpt4 key购买 nike

边缘类:

class Edge {
int dist = 0;
std::pair<Node, Node> ends;
public:
Edge() = default;
explicit Edge(const int idist) : dist(idist) { }
explicit Edge(const int idist, Node& end1, Node& end2) : dist(idist) {
ends.first = end1;
ends.second = end2;
}
~Edge() = default;
};
在ctor explicit Edge(const int idist, Node& end1, Node& end2)中,为什么不允许使用该语法?:
explicit Edge(const int idist, Node& end1, Node& end2) : dist(idist), ends.first(end1), ends.second(end2) { }

最佳答案

只是不允许这样做。作为member initializer list的语法,

class-or-identifier ( expression-list(optional) ) (1) 
class-or-identifier brace-init-list (2) (since C++11)

尽管 ends.firstends.second不引用类或标识符,但它们是表达式。您必须整体初始化 ends,例如
explicit Edge(const int idist, Node& end1, Node& end2) : dist(idist), ends(end1, end2) { }

关于c++ - 为什么在ctor中不允许访问成员对象的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63554663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com