几条"Error C4430: missing type specifier"错误消息
Several "Error C4430: missing type specifier" error messages
所有代码应该做的是创建类的实例并打印私有变量。我已经看了一堆(超过20)的"错误C4430:缺少类型说明符"错误在这个网站上,但没有帮助。
下面是类文件("Number.h"):
#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
和错误:
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
除了构造函数和析构函数之外,所有的函数定义都需要返回类型。例如,考虑setNumber
:
template <typename T>
Number<T>::setNumber(T setVar) {
myVar = setVar;
}
这应该返回void
:
template <typename T>
void Number<T>::setNumber(T setVar) {
myVar = setVar;
}
然后isEqual
应该返回bool
,以此类推。
别忘了定义你的析构函数:
template <typename T>
Number<T>::~Number() { }
然而,在这种情况下,您只需使用默认析构函数就可以了。
成员函数定义没有返回类型。您应该指定与在相应的声明中指定的相同的返回类型。
例如,既然您这样声明setNumber()
:
void setNumber(T newVar);
// ^^^^
它的定义应该是这样的(注意我添加了void
返回类型):
template <typename T>
void Number<T>::setNumber(T setVar) {
// ^^^^
// Don't forget the return type!
myVar = setVar;
}
这是你的类定义和成员函数定义之后的样子:
#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;
}
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- C++ 中的"this declaration has no storage class or type specifier"错误
- 如何修复派生类给出错误'declaration has no storage class or type specifier'?
- 编译错误 C++ "was not declared in this scope" "expected type specifier"等
- 头文件类成员函数声明错误:"incomplete type name in nested name specifier"
- 错误"this declaration has no storage class or type specifier"
- 在同一函数中"this declaration ahs no type specifier"和"expected a declaration"错误
- 使用字符串流时出现"Declaration has no storage class or type specifier"错误
- 在另一个类声明中创建类的对象时"Expected a type specifier"错误
- 包含<algorithm>和<limits>导致"invalid pure specifier"编译错误
- 在自定义类中实例化自定义类时出现"expected type-specifier"错误
- 错误"C++ requires a type specifier for all declarations"
- VC++ 2010:'missing type specifier'错误来来去去,无需更改代码
- 编译函数模板时出现"expected nested-name-specifier"错误
- 编译器错误:"expected specifier-qualifier-list"
- 几条"Error C4430: missing type specifier"错误消息