使用没有参数列表的模板名称“SmartArray”无效

时间:2016-11-10 22:06:19

标签: c++ class templates constructor

所以标题说明了我在使用类构造函数/析构函数时遇到的问题。这是我的代码:

    template <class ArrType>
    class SmartArray{
        public:
        ArrType *elements;              // pointer that will point to dynamic array
        int length();                   // function to return array length
        SmartArray<ArrType>();          // default constructor
        SmartArray(int arrSize);        // constructor that initializes array size
        ~SmartArray();                  // destructor
        void resizeArr(int newsize);        // function that resizes array
        SmartArray(const SmartArray& otherObject);  // copy constructor

这是默认的构造函数:

    SmartArray::SmartArray(){
        arrSize = 0;
        elements = new ArrType[arrSize];
        cout << "Created array using default constructor." << endl;     // letting user know that object was successfully created
    }

我确实尝试过查找问题,但是这些程序太高级了,我无法理解,或者我太愚蠢了。无论如何,我希望有一个简单的解决办法。

1 个答案:

答案 0 :(得分:1)

您必须使用template关键字来定义构造函数,还需要:

template<class ArrayType>
SmartArray<ArrayType>::SmartArray(){

   // ...

P.S。如果您确认已将此构造函数定义放在单独的.cpp文件中,则不幸的是,您的问题也必须以a duplicate of this question结束。