【发布时间】:2020-03-24 21:23:34
【问题描述】:
我在 main 中有这段代码:
Array<int> array1 = Array<int>(5);
array1.coutArray();
cout << "Minimal value: " << min(array1, 5);
我需要函数来获得数组的最小值。我试过这个功能:
template<class Array>
Array min(const Array* data, int size) {
T result = data[0];
for (int i = 1; i < size; i++)
if (result > data[i])
result = data[i];
return result;
}
但是对于来自互联网的每个变体,我都有一个关于第一个参数类型的错误。如何正确编写此函数或它正在调用? 数组类:
template <class T>
class Array {
protected:
int size;
T* DynamicArray;
public:
Array() {};
Array(size_t s) : size(s) {
DynamicArray = new T[size];
for (int i = 0; i < size; i++) {
cout << "Element " << i+1 << ": ";
cin >> DynamicArray[i];
}
}
void coutArray() {
for (int i = 0; i < size; i++) {
cout << DynamicArray[i] << " ";
}
}
~Array() {
delete[]DynamicArray;
}
};
template<class Array>
Array getMin(Array* arr, int size)
{
for (int i = 0; i < size; i++) {
cout << arr[i];
}
}
【问题讨论】:
-
你的
main()是什么样的? -
你是认真的吗?如果我附上所有代码,你写的只是最小的部分。如果只有最小的部分,你需要更多......你能帮我吗?怎么了?
-
试试看:
Array min(const Array& data, int size) -
我对这段代码有很多问题。你在哪里得到它?你为什么需要它? (或者认为你需要它?)
-
请注意,如图所示,您的代码还有其他问题,但您的即时问题可以通过将函数
min更改为采用Array&(数组引用)而不是指针来解决。
标签: c++ class templates definition member-functions