gpt4 book ai didi

c++ - 尝试使用 int[] 作为类型名模板,编译器无法识别函数 min 原型(prototype)中的参数

转载 作者:行者123 更新时间:2023-11-30 03:17:51 25 4
gpt4 key购买 nike

我正在撞墙。这段代码假设使用类型名模板并在我的函数中实现它们。前两个原型(prototype)函数按预期工作。第三个原型(prototype) min 给我带来了麻烦。它应该返回传递的数组中的最低值。但是,看起来好像我没有正确声明模板以使用数组。

<!-- language: lang-none -->
Error C2440 '=': cannot convert from 'int' to 'T1' Project6 56
Error C2446 '<': no conversion from 'T1' to 'int' Project6 60
Error C2440 '=': cannot convert from 'int' to 'T1' Project6 62

#include <iostream>
#include <ctime> // used for rand

template<typename T>
void assignRandom(T dataValue); // fills array with random values

template<typename T>
void print(T dataValue); // outputs array

template<typename T1>
T1 min(T1 dataValue); // identifies lowest value within array

using namespace std;

int main()
{
srand((unsigned int)time(NULL));
int data0[10];

assignRandom(data0);
cout << "Array of integer: ";
print(data0);
cout << min(data0);

return 0;
}

template<typename T>
void assignRandom(T dataValue)
{
for (int i = 0; i < 10; i++)
{
dataValue[i] = rand() % 10 + 1;
}

return;
}

template<typename T>
void print(T dataValue)
{
for (int i = 0; i < 10; i++)
{
cout << dataValue[i] << " ";
}
cout << endl;

return;
}

template<typename T1>
T1 min(T1 dataValue)
{
T1 minimum;

minimum = dataValue[0];

for (int i = 0; i < 10; i++)
{
if (dataValue[i] < minimum)
{
minimum = dataValue[i];
}
}

return minimum;
}

最佳答案

您的模板参数 T1 被推断为 int*。所以你的函数 min 在编译器看来是这样的:

int* min(int* dataValue)
{
int* minimum;

minimum = dataValue[0]; // dataValue[0] is an int

如果您将 min 的声明更改为:

template<typename T1>
T1 min(T1* dataValue)

然后 T1 将被推断为 int

关于c++ - 尝试使用 int[] 作为类型名模板,编译器无法识别函数 min 原型(prototype)中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55173061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com