为什么我的代码生成语法错误
Why is my code generating a syntax error?
以下C++代码生成此错误:
error C2061: syntax error : identifier 'IObject'
这是我的代码:
文件 : IObject.h
#include "IIStreamable.h"
using namespace Serialization;
namespace Object
{
class IObject : public IIStreamable
{
virtual void AcceptReader( IIReader* reader );
virtual void AcceptWriter( IIWriter* writer );
};
}
文件: IIWriter
#include "IObject.h"
#using namespace Object;
namespace Serialization
{
class ICORE_API IIWriter
{
public:
// primitive "built in" value types
virtual void writeChar(const char) =0;
virtual void writeUChar(unsigned char) =0;
virtual void writeCharPtr(const char*) =0;
virtual void writeUCharPtr(const unsigned char*) =0;
virtual void writeLong(long) =0;
virtual void writeULong(unsigned long) =0;
virtual void writeShort(short) =0;
virtual void writeUShort(unsigned short) =0;
virtual void writeInt(int) =0;
virtual void writeUInt(unsigned int) =0;
virtual void writeFloat(float) =0;
virtual void writeDouble(double) =0;
virtual void writeBool(bool) =0;
virtual void writeObject(IObject*) =0;
};
}
文件: IIStreamable
#include "IIReader.h"
#include "IIWriter.h"
namespace Serialization
{
class ICORE_API IIStreamable
{
public:
virtual void AcceptReader(IIReader*) = 0;
virtual void AcceptWriter(IIWriter*) = 0;
};
}
在VC ++ 2010中编译此代码后,我收到此错误
错误C2061:语法错误:标识符"IObject"
在 IIWriter.h 文件中和
错误C2061:语法错误:标识符"IIWriter"
在 IObject.h 文件中和
错误C2061:语法错误:标识符"IIWriter"
在 IIStreamale.h 文件中。
我不明白为什么会发生此错误?
请帮助我
谢谢
按照 piokuc 的建议使用 using 指令仍然会给你留下循环包含引用的问题
您最好将 IObject.h 更改为以下内容:
namespace Serialization
{
class ICORE_API IIWriter;
class ICORE_API IIReader;
}
namespace Object
{
class IObject : public IIStreamable
{
virtual void AcceptReader( Serialization::IIReader* reader );
virtual void AcceptWriter( Serialization::IIWriter* writer );
};
}
IE 删除 #include 并转发声明 IIReader 和 IIWriter。 事实上,你可以通过删除 IObject.h #include 来避免更多的混淆,
并转发声明与上面类似......virtual void writeObject( Object::IObject* ) = 0;
替换
#using namespace Object;
跟
using namespace Object;
相关文章:
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 我该怎么做才能摆脱使用命名空间时的语法错误?
- C++语法头文件错误
- 如何摆脱错误c2061;语法错误 cout?
- 语法错误:D3DX10Core 中的标识符'TEXTMETRICA'
- 错误 C2146:语法错误:标识符"A1"之前缺少","
- main.cpp(11):错误 C2059:语法错误:"字符串"
- 我想获取点的属性,它报告错误 C3867:"point::output_x":非标准语法;使用"&"创建指向成员的指针
- RedisGraph 语法错误在偏移量 8 靠近"创建"
- 如何修复此 FSM C++语法错误 C3867
- 函数错误 C2059:语法错误:'>'不起作用
- 为什么在main()之前断言会导致语法错误"error: expected ')' before numeric constant"?
- system() 返回错误语法错误:"("意外
- C++图形初始化错误(语法或丢失文件缺陷?
- 获取0:1(1):错误:语法错误,尝试编译着色器时意外$end
- Visual Studio错误:语法错误:标识符