首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >几条"Error C4430: missing type specifier“错误消息

几条"Error C4430: missing type specifier“错误消息
EN

Stack Overflow用户
提问于 2013-03-12 03:09:54
回答 2查看 1.7K关注 0票数 0

所有的代码应该做的就是创建一个类的实例并打印私有变量。我已经在这个站点上查看了一堆(超过20个) "Error C4430: missing type specifier“错误,但没有一个有帮助。

下面是类文件("Number.h"):

代码语言:javascript
复制
#ifndef NUMBER_H
#define NUMBER_H

#include <string>

template <typename T>
class Number {
private:
    T myVar;

public:
    Number(T consVariable);
    ~Number();

    void setNumber(T newVar);
    T getNumber();
    bool isEqual(T check);
    bool isBigger(T check);
    bool isSmaller(T check);
};

template <typename T>
Number<T>::Number(T conVar) {
    myVar = conVar;
}

template <typename T>
Number<T>::setNumber(T setVar) {
    myVar = setVar;
}

template <typename T>
Number<T>::getNumber() {
    return myVar;
}

template <typename T>
Number<T>::isEqual(T n) {
    if (myVar == n)
        return true;
    else
        return false;
}

template <typename T>
Number<T>::isBigger(T n)
{
    if (myVar >= n)
        return true;
    else
        return false;
}

template <typename T>
Number<T>::isSmaller(T n)
    {
    if (myVar <= n)
        return true;
    else
        return false;
}

#endif

以及错误:

代码语言:javascript
复制
number.h(31): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
number.h(36): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
number.h(44): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
number.h(53): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
number.h(62): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-12 03:11:20

除了构造函数和析构函数之外,所有的函数定义都需要返回类型。例如,考虑setNumber

代码语言:javascript
复制
template <typename T>
Number<T>::setNumber(T setVar) {
  myVar = setVar;
}

这应该返回void

代码语言:javascript
复制
template <typename T>
void Number<T>::setNumber(T setVar) {
  myVar = setVar;
}

然后isEqual应该返回bool,诸如此类。

别忘了还要定义你的析构函数:

代码语言:javascript
复制
template <typename T>
Number<T>::~Number() { }

然而,在这种情况下,您只需使用默认析构函数即可。

票数 0
EN

Stack Overflow用户

发布于 2013-03-12 03:11:01

您的成员函数定义没有返回类型。应指定与在相应声明中指定的返回类型相同的返回类型。

例如,由于您以这种方式声明setNumber()

代码语言:javascript
复制
    void setNumber(T newVar);
//  ^^^^

它的定义应该是这样的(注意我添加了void返回类型):

代码语言:javascript
复制
    template <typename T>
    void Number<T>::setNumber(T setVar) {
//  ^^^^  
//  Don't forget the return type!

        myVar = setVar;
    }

对每个成员函数执行此操作后,类定义和成员函数定义将如下所示:

代码语言:javascript
复制
#include <string>

template <typename T>
class Number {
private:
    T myVar;

public:
    Number(T consVariable);
    ~Number();

    void setNumber(T newVar);
    T getNumber();
    bool isEqual(T check);
    bool isBigger(T check);
    bool isSmaller(T check);
};

template <typename T>
Number<T>::Number(T conVar) {
    myVar = conVar;
}

template <typename T>
void Number<T>::setNumber(T setVar) {
    myVar = setVar;
}

template <typename T>
T Number<T>::getNumber() {
    return myVar;
}

template <typename T>
bool Number<T>::isEqual(T n) {
    if (myVar == n)
        return true;
    else
        return false;
}

template <typename T>
bool Number<T>::isBigger(T n)
{
    if (myVar >= n)
        return true;
    else
        return false;
}

template <typename T>
bool Number<T>::isSmaller(T n)
    {
    if (myVar <= n)
        return true;
    else
        return false;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15346591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档