【发布时间】:2015-04-15 03:42:15
【问题描述】:
这可能是一个复杂的问题,但我认为它有一个简单的答案。
所以我有一个包含自定义对象类型的结构:
// 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)
};
}
上面的代码 sn-p 有语法错误,但它演示了我想要做什么。注意 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是一个集合吗?如果没有,则需要提供构造函数。 -
;在结构的末尾,拜托! -
另外,您在此处显示的是
C的tagged struct initialization syntax。 C++ 不支持。 -
@Pradhan 我相信是的。它与这里显示的代码是平行的,唯一显着的区别是成员的数量。
-
顺便说一句,您的域名已损坏
标签: c++ struct initialization