【问题标题】:"error C4430" encountered while writing class template code for insertion sort为插入排序编写类模板代码时遇到“错误 C4430”
【发布时间】:2012-10-18 14:09:09
【问题描述】:

我正在尝试为插入排序算法编写一个模板类。但我遇到了错误“错误 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):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 c:\documents and settings\devil_den\my documents\visual studio 2008\projects\sorting_algorithms\sorting_algorithms\insertion_sort.cpp(34):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 c:\documents and settings\devil_den\my documents\visual studio 2008\projects\sorting_algorithms\sorting_algorithms\insertion_sort.cpp(41):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 主文件 生成代码... 构建日志保存在“file://c:\Documents and Settings\devil_den\My Documents\Visual Studio 2008\Projects\Sorting_Algorithms\Sorting_Algorithms\Debug\BuildLog.htm” Sorting_Algorithms - 3 个错误,0 个警告 ========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

【问题讨论】:

    标签: templates visual-c++


    【解决方案1】:

    set_data()sort_data()show_data() 的定义缺少它们的返回类型。所有声明的返回类型都是void,所以只需添加到定义中:

    template <typename T,int SIZE>
    void insertion_sort<T,SIZE>::set_data(void)
    {
        // snip ...
    }
    

    【讨论】:

    • 对这种愚蠢的错误感到抱歉。我给出了返回类型,但它再次显示了一些链接错误。 main.obj:错误 LNK2019:引用了未解析的外部符号“public:__thiscall insert_sort::~insertion_sort(void)”(??1?$insertion_sort@H$04@@QAE@XZ)在函数 _main
    • 主文件未获取 .cpp 文件。我把它和它现在的工作包括在内。
    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多