错误:“使用类模板's_array'需要模板参数”是什么意思?

时间:2017-08-05 18:18:54

标签: c++ templates data-structures

我目前正在攻读c ++考试。

我正在做一些关于模板的练习题,并且已经完全陷入困境,我检查了我的代码,它遵循解决方案,但这个错误不断弹出。我不确定我是如何传递错误的论点(这是我认为的问题。

代码如下所列,非常感谢任何帮助

测试

int main(){

    s_array array(10);
    array[5] = 5; //inbound access
    cout << array[5] << endl;

    array[-1] = 2;
    cout << array[15];
    return 0;
}

标题,类和模板:

template <typename T>
class s_array {
    public:
    s_array(int size);
    ~s_array();

    T &operator[](int i);

    private:
    int size;
    T* data;
};

template <typename T>
s_array<T>::s_array(int size) : size(size)
{
    /*
     * If the size of the array is greater than zero
     * A new array is created at the value of size
     */
    if(size > 0) data = new T[size];
    else{
        std::cout << "Invalid array" << endl;
        exit(1);
    }
}

template <typename T>
s_array<T>::~s_array()
{
    delete [] data;
}
/*
 * Safety feature for the array going out of bounds
 */
template <typename T>
T& s_array<T>::operator[](int i)
{
    if(i < 0 || i >= size){
        std::cout << "index" << i << "is out of bounds" << endl;
        exit(1);
    }
    return data[i];
}

1 个答案:

答案 0 :(得分:2)

您需要说明s_array持有的类型,例如,这将定义包含int类型的数组。在模板定义中,int现在将被替换为T以前的所有

s_array<int> array(10);