0

我有一个 C++ 模板类,它的构造函数有一个默认参数。

它可以用非默认参数实例化作为数组吗?(如果没有,为什么不呢?)

任何一个都有效,但不能同时工作(在 g++ 4.6.3 中):

template <class T> class Cfoo {
  public:
    int x;
    Cfoo(int xarg=42) : x(xarg) {}
};

Cfoo<int> thisWorks[10];
Cfoo<int> thisWorks(43);
Cfoo<int> thisFails(43)[10];
Cfoo<int> thisFails[10](43);
Cfoo<int>[10] thisFails(43);
// (even crazier permutations omitted)
4

2 回答 2

1

Your are correct: You can only default-construct elements in an array while you can pass any argument you like to a single object construction.

If you need a collection, in C++98 you can utilize std::vector:

std::vector<Cfoo<int> >(10, 43);
于 2013-09-17T16:12:23.600 回答
1

您不能使用非默认构造函数创建数组。

于 2013-09-17T16:11:20.257 回答