0

我有这些结构。

struct V
{
    int data[2];
    V(int a,int b)
    {
        data[0] = a;
        data[1] = b;
    } 
}

typedef std::vector<int> X;

struct A
{
    B<V> member1;
    B<X> member2;

    A(V member1_, X member2_) : member1(member1_),member2(member2_){}
}

template<typename T>
struct B
{
    T data;
    B(T data_){data = data_;}
}

如何创建结构 A 的对象?我希望像这样声明一个对象 A

A a;

然后稍后使用它将 member1 分配给它。这是因为直到程序运行的后期我才知道 B 的数据。但是编译器不会让我抱怨B中的默认构造函数,说我没有。当 B 是模板时,如何为 B 和 A 编写默认构造函数?有没有更好的方法来实现这一目标?

谢谢你的帮助。

4

1 回答 1

1

给 struct B 一个空的默认构造函数。它也将运行数据的默认构造函数。您只需要确保 T 也有一个默认构造函数(实际上,您的当前代码也需要 - 在打开构造函数的大括号之前构造成员)。

于 2013-06-24T22:03:33.660 回答