我正在尝试创建一个模板函数并通过引用将两个变量传递给它,每个事情听起来都不错但它从未编译过,错误信息是: -
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
我尝试了一小部分代码,它给了我同样的错误,请帮忙吗?
这是代码的一部分,所有其他代码就像这样:
int size , found = -1 ;
template<class type> Read_Data( type &key , type &arr)
{
cout << " please enter the size of your set \n " ;
cin >> size ;
arr = new type[size];
cout << " please enter the elements of your set : \n " ;
for (int i = 0 ; i <size ; i ++ )
{
cout << " enter element number " << i << ": " ;
cin >> arr[i] ;
}
cout << " please enter the key elemente you want to search for : \n " ;
cin >> key ;
}
void main(void)
{
int key , arr ;
Read_Data (key, arr);
/*after these function there is two other functions one to search for key
in array "arr" and other to print the key on the screen */
}
答案 0 :(得分:1)
您需要在函数Read_Data
的声明中指定返回值类型。
一些例子:
template<class type> void Read_Data( type &key , type &arr)
template<class type> int Read_Data( type &key , type &arr)
template<class type> type Read_Data( type &key , type &arr)
如果您不打算在该函数中返回任何内容,那么第一个示例可能就是您所需要的......
顺便说一下,你还需要:main
中,将int arr
更改为int* arr
。main
中,将Read_Data
更改为Read_Data<int>
。main
中,请在使用完毕后致电delete[] arr
。Read_Data
中,将type &arr
更改为type* &arr
。答案 1 :(得分:0)
您只是遗漏了一些东西来编写代码(解决您看到的错误)。
基本上,在int main()
中,您需要在实例化模板时指定类型,如:
Read_Data <int> (key, value);
以便编译器知道您真正想要用什么类型实例化它。
另请注意,数组应为int *
类型。因此,在模板化函数中,签名必须更改为:
template<class type> Read_Data( type &key , type* &arr)
这是更正的代码,它不会显示您之前看到的错误:
#include<iostream>
using namespace std;
int size , found = -1 ;
template<class type> void Read_Data( type &key , type* &arr)
{
cout << " please enter the size of your set \n " ;
cin >> size ;
arr = new type[size];
cout << " please enter the elements of your set : \n " ;
for (int i = 0 ; i <size ; i ++ )
{
cout << " enter element number " << i << ": " ;
cin >> arr[i] ;
}
cout << " please enter the key elemente you want to search for : \n " ;
cin >> key;
}
int main()
{
int key;
int * arr;
Read_Data<int> (key, arr);
/* after these function there is two other functions one to search for key
* in array "arr" and other to print the key on the screen
*/
}