Error: variable or field 'PrintEntity' declared void void PrintEntity(Entity e);
Error: variable or field 'PrintEntity' declared void void PrintEntity(Entity e);
代码真的很简单(但我是新手,所以我不知道我做错了什么):
#include<iostream>
#include<string>
void PrintEntity(Entity* e);
class Entity
{
public:
int x,y;
Entity(int x, int y)
{
Entity* e= this;
e-> x=x;
this->y=y;
PrintEntity(this);
}
};
void PrintEntity(Entity* e)
{
// *Do stuff*
}
int main()
{
return 0;
}
我对错误的理解是我不能在of之前声明函数PrintEntity
class 实体。但是,即使我在 class 下方声明函数,这也是一个问题,因为在构造函数中我调用了函数 PrintEntity.
所以我很困惑。任何人都可以向我解释我做错了什么吗?
在class定义之前声明函数,如
void PrintEntity( class Entity* e);
使用详细的类型说明符。
否则编译器不知道什么是Entity
.
编译器从上到下读取您的文件。
当它遇到void PrintEntity(Entity * e);
时,它必须判断Entity * e
是形参(使其成为函数声明)还是乘法(使其成为具有初始化程序的变量声明)。
由于编译器完全不知道称为 "Entity" 的类型,因此它决定这必须是变量声明,并且变量不能具有类型 void
。
解决方法是在函数原型前声明class,要么单独声明:
class Entity;
void PrintEntity(Entity* e);
或者直接在函数声明中:
void PrintEntity(class Entity* e);
代码真的很简单(但我是新手,所以我不知道我做错了什么):
#include<iostream>
#include<string>
void PrintEntity(Entity* e);
class Entity
{
public:
int x,y;
Entity(int x, int y)
{
Entity* e= this;
e-> x=x;
this->y=y;
PrintEntity(this);
}
};
void PrintEntity(Entity* e)
{
// *Do stuff*
}
int main()
{
return 0;
}
我对错误的理解是我不能在of之前声明函数PrintEntity class 实体。但是,即使我在 class 下方声明函数,这也是一个问题,因为在构造函数中我调用了函数 PrintEntity.
所以我很困惑。任何人都可以向我解释我做错了什么吗?
在class定义之前声明函数,如
void PrintEntity( class Entity* e);
使用详细的类型说明符。
否则编译器不知道什么是Entity
.
编译器从上到下读取您的文件。
当它遇到void PrintEntity(Entity * e);
时,它必须判断Entity * e
是形参(使其成为函数声明)还是乘法(使其成为具有初始化程序的变量声明)。
由于编译器完全不知道称为 "Entity" 的类型,因此它决定这必须是变量声明,并且变量不能具有类型 void
。
解决方法是在函数原型前声明class,要么单独声明:
class Entity;
void PrintEntity(Entity* e);
或者直接在函数声明中:
void PrintEntity(class Entity* e);