mar*_*zzz 3 c++ initialization class member-initialization
这是我的代码/命名空间:
namespace myNamespace {
enum MyType {
ASD1,
ASD2,
ASD3
};
struct MyClass {
MyType mMyType;
MyClass(MyType myType = MyType::ASD1) : mMyType(myType) {
}
};
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我在另一个结构中尝试此代码:
struct X
{
myNamespace::MyClass *pMyClass1 = new myNamespace::MyClass(myNamespace::MyType::ASD2);
};
Run Code Online (Sandbox Code Playgroud)
它完美地工作,但是如果我尝试这样做:
struct X
{
myNamespace::MyClass mMyClass1(myNamespace::MyType::ASD2);
};
Run Code Online (Sandbox Code Playgroud)
它说'myNamespace::MyType::ASD2' is not a type。
既然已经声明过了,为什么呢?
在类内部,您可以使用{..}或= ..语法,而不是(..):
struct Test {
myNamespace::MyClass mMyClass1{myNamespace::MyType::ASD2};
// myNamespace::MyClass mMyClass1 = myNamespace::MyClass{myNamespace::MyType::ASD2};
};
Run Code Online (Sandbox Code Playgroud)