我有一大堆代码,无论我多么薄弱,都会让我失败.有问题的代码是:
#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打勾,编译标志.
您试图在任何函数之外执行语句(函数调用是显式的).这不起作用.
#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)
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |