无法推断模板参数"循环类型"
couldn't deduce template parameter ‘looptype’
#include<cstdlib>
#include<iostream>
#include<math.h>
#include<string>
using namespace std;
class getAverage{
public:
template<class add>
add computeAverage(add input[], int nosOfElem){
add sum = add();//calling default constructor to initialise it.
for(int index=0;index<=nosOfElem;++index){
sum += input[index];
}
return double(sum)/nosOfElem;
}
template<class looptype>
looptype* returnArray(int sizeOfArray){
looptype* inputArray= (int*)malloc(sizeof(int)*sizeOfArray);
for(int index=0;index<=sizeOfArray;++index){
inputArray[index]=index;//=rand() % sizeOfArray;
}
return inputArray;
}
};
int main(){
int sizeOfArray=2;
int inputArray;
getAverage gA;
int* x= gA.returnArray(sizeOfArray);
for(int index=0;index<=2;++index){
cout<<x[index];
}
cout<<endl;
cout<<gA.computeAverage(x,sizeOfArray);
free(x);
return 0;
}
我想创建一个模板函数,通过它我可以创建不同类型的动态数组(Int,long,string ..等(。我尝试这样做,并意识到"looptype"永远不会获得类型值。有人可以建议一种方法来做到这一点。
谢谢
template<class looptype>
looptype* returnArray(int sizeOfArray){
looptype* inputArray= (int*)malloc(sizeof(int)*sizeOfArray);
for(int index=0;index<=sizeOfArray;++index){
inputArray[index]=index;//=rand() % sizeOfArray;
}
return inputArray;
}
模板参数只能从函数模板参数中推导出来。在这里,您的函数模板采用的唯一参数是 sizeOfArray
这是一个int
。编译器如何知道typename looptype
是什么?由于无法推断,因此必须显式指定它。
int* x= gA.returnArray<int>(sizeOfArray);
而不是:
int* x= gA.returnArray(sizeOfArray);
顺便说一句,当我知道模板参数只能
是您的这行代码出售的int
时,looptype
模板参数有什么意义:
...
looptype* inputArray= (int*)malloc(sizeof(int)*sizeOfArray);
...
你对malloc
的使用是可怕的。对于几乎相同的性能,您正在使简单的任务变得复杂。更喜欢std::vector<int>
或更坏的情况std::unique_ptr<int[]>
。
相关文章:
- 使用循环创建类对象
- 如何在 c++ 中按预定义的顺序循环浏览类实例?
- 在C++中循环访问类继承
- 我想在 C++ 中使用 for 循环创建类对象
- 有没有办法重复循环循环?
- 您可以在没有列表或向量的情况下循环访问类对象吗?
- 虽然第三次循环循环,尽管在我眼中没有满足它的条件,因此打印了一个空字符串
- 循环依赖(类对类型定义,类型定义对类),前向声明给出不明确的调用
- 避免以不同的迭代剂的循环循环避免几乎相同的代码重复
- 循环循环保存到数组,然后访问;
- 对于循环循环仅 3 次
- 处理媒体循环循环循环通过向量中的对象的各个方面
- 将C转换为循环循环循环
- 嵌套的循环调用类成员函数
- 关于如何正确循环循环并找到最小的价值,需要基本C 的帮助
- C++ 长度为 100 的循环队列类
- 循环访问类的所有公共方法
- 循环访问类中的不同集合类型
- 如何在C++中使用循环依赖类
- 循环访问类模板的显式专用化