这可能是一个复杂的问题,但我认为它有一个简单的答案。
所以我有一个包含自定义对象类型的结构体:
上面的代码片段有语法错误,但它演示了我想要做的事情。请注意, MyClass 没有默认构造函数,因此必须给出参数列表。
谢谢!
编辑 - 结论
如指出的那样,我的初始化列表是 C 风格的,无法工作。不幸的是,C++11 初始化列表不符合我的编译器要求,将所有参数抛到构造函数中的选项也不切实际。
因此,我采用了另一种解决方案,并将指针结构更改为以下内容:
感谢大家!
所以我有一个包含自定义对象类型的结构体:
// header1.h
struct MyStruct
{
MyClass myObject1;
MyClass myObject2;
};
我有一个指向MyStruct的全局指针。我将使用new
关键字来分配和实例化结构体。在这样做时,我想通过初始化列表按名称构建每个myObject,如下所示。
// codeFile1.cpp
MyStruct *myStructPtr;
int main()
{
myStructPtr = new MyStruct
{ //syntax error: missing ';'
.myObject1 = MyClass(arg1, arg2),
.myObject2 = MyClass(arg1, arg2)
};
}
上面的代码片段有语法错误,但它演示了我想要做的事情。请注意, MyClass 没有默认构造函数,因此必须给出参数列表。
谢谢!
编辑 - 结论
如指出的那样,我的初始化列表是 C 风格的,无法工作。不幸的是,C++11 初始化列表不符合我的编译器要求,将所有参数抛到构造函数中的选项也不切实际。
因此,我采用了另一种解决方案,并将指针结构更改为以下内容:
// header1.h
struct MyStruct
{
MyClass *myObjectPtr1;
MyClass *myObjectPtr2;
};
// codeFile1.cpp
MyStruct myStruct;
int main()
{
myStructPtr.myObjectPtr1 = new MyClass(arg1, arg2);
myStructPtr.myObjectPtr2 = new MyClass(arg1, arg2);
}
感谢大家!
MyStruct
是一个聚合体吗?如果不是,您需要提供一个构造函数。 - Pradhan;
! - Christophe