我有一大堆代码,无论我多么精简,都会让我失败。有问题的代码是:
#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 ++编程比较陌生,但是花了几个小时来研究Stackexchange和类上的教程会告诉我上面的代码段应该运行。
使用前向声明已解决了其他多个此类问题,但在这种情况下,它尝试将对象“Wall”作为类读取。由于该课程以前相当大一些,我对其进行了相当大的调整,但仍然无法正常工作。我将此示例基于关于C ++类和成员函数的Tutorialspoint教程。
我在Windows 7(64位)计算机上使用了Code :: Blocks 13.12附带的MinGw,编译器标记为-std=c++11
。
答案 0 :(得分:6)
您正在尝试在任何函数之外执行语句(函数调用是显式的)。这不起作用。
#include <iostream>
class Tile;
class Tile{
public:
void PRINTME() { ::std::cout << "I PRINTED MESELF!\n"; }
};
int main()
{
Tile Wall;
Wall.PRINTME();
}
将其置于可以使用其身份的位置works。
关于您对前向引用的猜测,它们完全unnecessary代码可以使用 - 实际上您甚至根本不需要命名类Tile
:
#include <iostream>
struct { void PRINTME() { std::cout << "I PRINTED MESELF!\n"; } } Wall;
int main() { Wall.PRINTME(); }