【发布时间】:2020-09-19 21:13:35
【问题描述】:
我正在尝试制作一个创建数组类的简单模板。但是,我想使用两个参数:一个类型名和一个 int 变量。我遇到了两个错误,我不确定我做错了什么。这是我的简单且有效的来源。
int main()
{
Array<int, 7> tArray;
std::cout << tArray.getSize() << std::endl;
for (int i = 0; i < tArray.getSize(); i++)
{
tArray.insert(i + 5);
i++;
}
tArray.printArray();
return 0;
}
我遇到的错误/问题与我的头文件中的两个函数有关。
#pragma once
template <typename T, int S>
class Array
{
private:
T arr[S];
public:
Array();
int getSize() const;
int insert(T val);
void printArray();
~Array();
};
cArray<T, S>::cArray() { }
template <typename T, int S>
int Array<T, S>::insert(T val)
{
Array<T, S>* temp = new Array[S];
temp = this;
return temp[val];
}
template <typename T, int S>
void Array<T, S>::printArray()
{
Array<T, S>* temp = new Array[S];
temp = this;
for (int i = 0; i < S; i++)
{
std::cout << tempArray[i] << std::endl;
}
}
insert 和 printArray 函数不起作用。对于插入函数,返回的错误状态为:Suppression State Error C2440 'return': cannot convert from 'Array
这是我第一次使用带有两个参数的模板,所以我对我在这里做错了什么感到有点困惑。有需要吗?
【问题讨论】:
-
能否精简您的代码以专注于
insert函数?你觉得这个功能有什么作用? (目前,它没有任何用处。) -
想想
new Array[S];的作用。 -
刚刚将代码修剪为有错误的函数。我希望函数将值 (val) 添加到调用它的数组中。
-
@SmithJohn 你已经描述了你希望这个函数作为一个整体来完成什么。我想知道你认为它的每一行是做什么的。
-
@JaMiT 第一行创建一个临时数组。下一行将把它设置为等于发送给函数的数组/数据(它持有)。一旦临时数组获得了信息,我将返回要输入的数字的值,同时将其附加到数组中的给定插槽。这就是它背后的思考过程。