C++:使用非默认构造函数动态分配结构成员数组
如果我有:
struct a_struct
{
int an_int;
a_struct(int f) : an_int(f) {}
a_struct() : an_int(0) {}
};
class a_class
{
a_struct * my_structs;
a_class() {...}
};
我可以做:
a_class() {my_structs = new a_struct(1)}
//or
a_class() {my_structs = new a_struct [10]}
但我不能做:
a_class() {my_structs = new a_struct(1) [10]}
//or
a_class() {my_structs = new a_struct() [10]}
有没有正确的语法可以让它工作?或者一个简单的解决方法?
If I have:
struct a_struct
{
int an_int;
a_struct(int f) : an_int(f) {}
a_struct() : an_int(0) {}
};
class a_class
{
a_struct * my_structs;
a_class() {...}
};
I can do:
a_class() {my_structs = new a_struct(1)}
//or
a_class() {my_structs = new a_struct [10]}
But I cannot do:
a_class() {my_structs = new a_struct(1) [10]}
//or
a_class() {my_structs = new a_struct() [10]}
Is there any correct syntax to get this to work? Or an easy work around?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果可以选择使用 STL,则可以使用 std::vector 而不是动态数组。
我认为这会起作用:
如果没有,这应该:
If using the STL is an option, you could use std::vector instead of a dynamic array.
I think that this will work:
If not, this should:
您可以分配原始内存块并使用 placement new 来初始化每个
struct
:另请参阅:“展示位置新”有什么用途?
You could allocate a raw chunk of memory and use placement new to initialize each
struct
:See also: What uses are there for "placement new"?
您可以使用指向指针的指针数组。然后你可以创建一个数组来保存指向 a_struct() 的指针,这样你就可以稍后决定使用哪个构造函数:
You could use an array of pointers to pointers. Then you can create the array that will hold pointers to a_struct(), so you can decide later which constructor to use:
您不能直接在任何特定的参数化构造函数上执行此操作。不管你可以做什么,
我建议使用
std::vector
容器而不是经历这个过程。You can't do it directly on any particular parameterized constructor. However you can do,
I suggest using a
std::vector
container instead of going through this process.