对象没有命名类型?

Dar*_*mma 0 c++ object c++11

我有一大堆代码,无论我多么薄弱,都会让我失败.有问题的代码是:

#include <iostream>
class Tile;
class Tile{
    public:
    void PRINTME();
};

void Tile::PRINTME() { std::cout << "Blergh"; }

Tile Wall;
Wall.PRINTME();
Run Code Online (Sandbox Code Playgroud)

它显示以下错误消息:

(...)\MapTiles.h|11|error: 'Wall' does not name a type|
Run Code Online (Sandbox Code Playgroud)

我可能对C++编程比较陌生,但是花几个小时来研究Stackexchange和类上的教程会告诉我上面的代码片段应该运行.

使用前向声明已解决了其他多个此类问题,但在这种情况下,它尝试将对象"Wall"作为类读取.由于该课程以前相当大一些,我对其进行了相当大的调整,但仍然无法正常工作.我将此示例基于C++类和成员函数的Tutorialspoint教程.

我正在使用带有Code :: Blocks 13.12的MinGw,在Windows 7(64位)机器上-std=c++11打勾,编译标志.

gha*_*.st 6

您试图在任何函数之外执行语句(函数调用是显式的).这不起作用.

#include <iostream>
class Tile;
class Tile{
    public:
    void PRINTME() { ::std::cout << "I PRINTED MESELF!\n"; }
};

int main()
{
    Tile Wall;
    Wall.PRINTME();
}
Run Code Online (Sandbox Code Playgroud)

把它放在允许使用法规的地方就可以了.

至于你对前向引用的猜测,它们完全没有必要让你的代码工作 - 实际上你甚至根本不需要命名这个类Tile:

#include <iostream>
struct { void PRINTME() { std::cout << "I PRINTED MESELF!\n"; } } Wall;
int main() { Wall.PRINTME(); }
Run Code Online (Sandbox Code Playgroud)