我正在尝试为Insertion Sort算法编写模板类。但我遇到错误“错误C4430:缺少类型说明符 - 假设int。注意:C ++不支持default-int”。但我不确定为什么会出现这个错误。
insertion_sort.h文件如下:
#pragma once
#include <iostream>
template <typename T,int SIZE>
class insertion_sort
{
T data[SIZE];
public:
insertion_sort(void);
void set_data();
void sort_data();
void show_data();
~insertion_sort(void);
};
insertion_sort.cpp文件如下:
#include <iostream>
#include "insertion_sort.h"
using namespace std;
template <typename T,int SIZE>
insertion_sort<T,SIZE>::insertion_sort(void)
{
typedef typename int i;
for(i=0;i<SIZE;i++)
data[i]=NULL;
}
template <typename T,int SIZE>
insertion_sort<T,SIZE>::set_data(void)
{
typedef typename int i;
cout<<"ENTER THE DATA"<<endl;
for(i=0;i<SIZE;i++)
cin>>data[i];
}
template <typename T,int SIZE>
insertion_sort<T,SIZE>::sort_data()
{
typedef typename int i,j;
T key;
for(i=1;i<SIZE;i++)
{
j=i-1;
key=data[j]
while(data[j-i]>key)
{
data[j]=data[j-1];
j--;
};
data[j+1]=key;
}
}
template <typename T,int SIZE>
insertion_sort<T,SIZE>::show_data()
{
typedef typename int i;
for(i=0;i<SIZE;i++)
cout<<data[i]<<"\t";
}
template <typename T,int SIZE>
insertion_sort<T,SIZE>::~insertion_sort(void)
{
}
main.cpp文件如下:
#include <iostream>
#include "insertion_sort.h"
using namespace std;
int main()
{
insertion_sort<char,5> S;
S.set_data();
S.sort_data();
S.show_data();
return 0;
}
当我构建代码时,我遇到以下错误:
c:\documents and settings\devil_den\my documents\visual studio 2008\projects\sorting_algorithms\sorting_algorithms\insertion_sort.cpp(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\documents and settings\devil_den\my documents\visual studio 2008\projects\sorting_algorithms\sorting_algorithms\insertion_sort.cpp(34) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\documents and settings\devil_den\my documents\visual studio 2008\projects\sorting_algorithms\sorting_algorithms\insertion_sort.cpp(41) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int main.cpp Generating Code... Build log was saved at "file://c:\Documents and Settings\devil_den\My Documents\Visual Studio 2008\Projects\Sorting_Algorithms\Sorting_Algorithms\Debug\BuildLog.htm" Sorting_Algorithms - 3 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
答案 0 :(得分:3)
set_data()
,sort_data()
和show_data()
的定义缺少其返回类型。所有声明的返回类型都为void
,所以只需添加到定义中:
template <typename T,int SIZE>
void insertion_sort<T,SIZE>::set_data(void)
{
// snip ...
}