对象不命名类型
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++编程相对较新,但是几个小时的Stackexchange和类教程的挖掘告诉我,上面的代码片段应该运行。
这里已经使用前向声明解决了许多其他此类问题,但在这种情况下,它试图将对象"Wall"作为一个类来读取。由于该类以前要大得多,因此我对其进行了相当大的修剪,但它仍然无法正常工作。我基于C++类和成员函数的教程点教程。
我正在使用带有代码::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();
}
把它放在允许语句的地方,它可以工作。
至于你对前向引用的猜测,它们对于你的代码来说是完全没有必要的——事实上,你甚至根本不需要命名类Tile
:
#include <iostream>
struct { void PRINTME() { std::cout << "I PRINTED MESELF!n"; } } Wall;
int main() { Wall.PRINTME(); }
相关文章:
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- C++ 多态模板类,模板类型对象的实例化
- 如何分配适合容纳 T 类型对象的缓冲区(可能过度对齐、可能有运算符 new 等)
- 如何构造一个 std::variant 类型对象,其自身 Templated 和构造函数转发参数
- C++:初始化指向具有不同类型对象的指针数组
- 在类 C++ 中构造的模板类型对象
- 如何将颁发者名称设置为x509_req类型对象
- 将任何数据类型/对象作为参数传递以确定其大小
- 将引用类型对象的数组从C#封送到C++
- <T> 从类型对象创建类型<T1>对象的构造函数
- C++是否有现有的方法来检查对象是否是派生类型对象
- C 模板:创建与现有对象相同的类型对象
- 链接列表中的虚函数 - 多种返回类型(对象)
- 没有适当操作员()的类型对象的呼叫
- 制作垫子类型对象的数组.输出窗口显示同一帧
- 抽象类型对象的分配
- 在std::list中就地创建自定义类型对象
- 接受泛型列表类型对象的参数
- C++-将模板类型对象强制转换为特定的数据类型
- 试图在C++中打印存储在类型对象数组中的信息