我目前正在攻读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];
}
答案 0 :(得分:2)
您需要说明s_array
持有的类型,例如,这将定义包含int
类型的数组。在模板定义中,int
现在将被替换为T
以前的所有
s_array<int> array(10);