【发布时间】:2012-02-02 07:43:12
【问题描述】:
为什么包含枚举的结构的隐式复制构造函数不使用const 版本 - 或者为什么根本没有复制构造函数?我希望创建一个隐式复制构造函数,即:
X(const X& x)
我知道在何时发生这种情况时有一些规则,例如,如果成员变量没有复制构造函数或非常量复制构造函数。我想我的问题是这与枚举有什么关系——如果是这条规则适用?
添加我自己的复制构造函数似乎可行。
示例 - 隐式创建的复制构造函数(如果有):
struct MyStruct {
int myInt;
double myDouble;
MyEnum myEnum;
};
【问题讨论】:
-
C++ 什么时候不能合成复制构造函数?如果其中一个成员无法复制,则根本不会生成自动复制构造函数,故事结束。
-
如果它是隐式的,你能解释一下你是如何知道复制构造函数有这个签名的吗?
int main() { const X x1; X x2(x1); }不行吗? -
请举一个具体的例子来说明问题。
-
请发布一个简单但完整的示例来演示您的问题,如sscce.org 所述。
-
@Magnus 我们永远不会通过猜测来找出问题所在。请发布一个完整的示例,其中包括 MyEnum 的定义、MyStruct 的定义以及您尝试在标准容器中使用 MyStruct 的方式,我们可以尝试自己编译并自己查看错误。然后我们可以告诉你发生了什么。
标签: c++ enums struct copy-constructor