ARRAY [T,SIZE]适当的默认构造函数

时间:2014-08-17 18:18:04

标签: c++

using namespace std;

template<class T, int SIZE>
class Array
{
private:
    T array[SIZE];
public:
    T& operator[](int nIndex)
    {
        return array[nIndex];
    }
 };

template<class T1, class T2> 
class Pairs
{
private:
    T1 first;
    T2 second; T2 third;
public:
    Pairs(const T1& t1, const T2& t2) : 
        first(t1), second(t2)
    {}
};

int main(int argc, char** argv)
{    
   Array<Pairs<int, int>, 40> sample;

   sample[0] =  Pairs <int, int> (40, 20);

   return 0;
}

我是C ++的新手。刚试了一些模板并获得了:

error: ARRAY<T,SIZE>: no appropriate default constructor available.

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您的班级Pairs没有默认构造函数。 Array< Pairs<int, int>, 40>的一个实例需要构建40个Pairs个实例 - 但是没有构造函数可以用它来构建。

如果您希望PairsArray中可用,请为其指定默认构造函数(不带参数的构造函数)。