对象没有命名类型?
Object does not name a type?
我有一大块代码,无论我如何精简它,它总是失败。有问题的代码是:
#include <iostream>
class Tile;
class Tile{
public:
void PRINTME();
};
void Tile::PRINTME() { std::cout << "Blergh"; }
Tile Wall;
Wall.PRINTME();
它显示以下错误消息:
(...)\MapTiles.h|11|error: 'Wall' does not name a type|
我可能是 C++ 编程的新手,但是在 classes 上研究 Stackexchange 和教程的几个小时告诉我上面的代码片段应该 运行.
此处的多个其他此类问题已使用前向声明解决,但在本例中,它试图将对象 "Wall" 读取为 class。由于 class 之前比较大,我对它进行了相当大的修整,但它仍然无法正常工作。这个例子基于 C++ classes 和成员函数的 Tutorialspoint 教程。
我在 Windows 7(64 位)机器上使用 Code::Blocks 13.12 附带的 MinGw,编译器标志 -std=c++11
已勾选。
您正试图在任何函数之外执行语句(明确的函数调用)。这行不通。
#include <iostream>
class Tile;
class Tile{
public:
void PRINTME() { ::std::cout << "I PRINTED MESELF!\n"; }
};
int main()
{
Tile Wall;
Wall.PRINTME();
}
把它放在允许声明的地方works。
至于你对前向引用的猜测,它们完全 unnecessary 让你的代码工作 - 事实上你甚至根本不需要命名 class Tile
:
#include <iostream>
struct { void PRINTME() { std::cout << "I PRINTED MESELF!\n"; } } Wall;
int main() { Wall.PRINTME(); }
我有一大块代码,无论我如何精简它,它总是失败。有问题的代码是:
#include <iostream>
class Tile;
class Tile{
public:
void PRINTME();
};
void Tile::PRINTME() { std::cout << "Blergh"; }
Tile Wall;
Wall.PRINTME();
它显示以下错误消息:
(...)\MapTiles.h|11|error: 'Wall' does not name a type|
我可能是 C++ 编程的新手,但是在 classes 上研究 Stackexchange 和教程的几个小时告诉我上面的代码片段应该 运行.
此处的多个其他此类问题已使用前向声明解决,但在本例中,它试图将对象 "Wall" 读取为 class。由于 class 之前比较大,我对它进行了相当大的修整,但它仍然无法正常工作。这个例子基于 C++ classes 和成员函数的 Tutorialspoint 教程。
我在 Windows 7(64 位)机器上使用 Code::Blocks 13.12 附带的 MinGw,编译器标志 -std=c++11
已勾选。
您正试图在任何函数之外执行语句(明确的函数调用)。这行不通。
#include <iostream>
class Tile;
class Tile{
public:
void PRINTME() { ::std::cout << "I PRINTED MESELF!\n"; }
};
int main()
{
Tile Wall;
Wall.PRINTME();
}
把它放在允许声明的地方works。
至于你对前向引用的猜测,它们完全 unnecessary 让你的代码工作 - 事实上你甚至根本不需要命名 class Tile
:
#include <iostream>
struct { void PRINTME() { std::cout << "I PRINTED MESELF!\n"; } } Wall;
int main() { Wall.PRINTME(); }