这是我的code/namespace:
namespace myNamespace {
enum MyType {
ASD1,
ASD2,
ASD3
};
struct MyClass {
MyType mMyType;
MyClass(MyType myType = MyType::ASD1) : mMyType(myType) {
}
};
}
现在,如果我在另一个结构中尝试此代码:
struct X
{
myNamespace::MyClass *pMyClass1 = new myNamespace::MyClass(myNamespace::MyType::ASD2);
};
它工作正常,但是如果我尝试这样做:
struct X
{
myNamespace::MyClass mMyClass1(myNamespace::MyType::ASD2);
};
它说'myNamespace::MyType::ASD2' is not a type
。
既然已经声明过了,为什么呢?
答案 0 :(得分:5)
在内部类中,您可以使用<div class="cardgroup">
<div class="card">
Lorem Ipsum
</div>
<div class="card">
Lorem Ipsum
</div>
<div class="card">
Lorem Ipsum
</div>
</div>
或{..}
语法,而不是= ..
:
(..)
答案 1 :(得分:3)
您必须使用大括号或相等的初始化程序。没有符号=的括号中不能使用初始化器。
来自C ++标准(12.2类成员)
member-declarator:
declarator virt-specifier-seqopt pure-specifieropt
declarator brace-or-equal-initializeropt
identifieropt attribute-specifier-seqopt : constant-expression
例如
myNamespace::MyClass mMyClass1 { myNamespace::MyType::ASD2 };
或
myNamespace::MyClass mMyClass1 = myNamespace::MyType::ASD2;
最后一次初始化有效,因为构造函数是转换构造函数