【发布时间】:2018-12-23 09:41:59
【问题描述】:
谁能解释一下为什么我不能这样定义:
Class A {
A a;
//...
};
但我可以这样定义:
Class A {
std::vector<A> vec;
//...
};
允许第二个有什么区别?
【问题讨论】:
-
尝试计算类
A的对象的大小(提示vector通常只存储几个指针) -
第二个在标准 C++ 中也是不允许的。
-
@juanchopanza 为什么会这样?
-
@juanchopanza 类似于
Class A { A* somePtr; } -
@Guinzoo 除了标准说拥有不完整类型的容器是未定义的行为。除非在 c++17 中改变。