Ben*_*ane 5 c++ syntax-error identifier visual-c++
以下C++代码生成此错误:
error C2061: syntax error : identifier 'IObject'
这是我的代码:
file:IObject.h
#include "IIStreamable.h"
using namespace Serialization;
namespace Object
{
class IObject : public IIStreamable
{
virtual void AcceptReader( IIReader* reader );
virtual void AcceptWriter( IIWriter* writer );
};
}
Run Code Online (Sandbox Code Playgroud)
文件: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;
};
}
Run Code Online (Sandbox Code Playgroud)
文件:IIStreamable
#include "IIReader.h"
#include "IIWriter.h"
namespace Serialization
{
class ICORE_API IIStreamable
{
public:
virtual void AcceptReader(IIReader*) = 0;
virtual void AcceptWriter(IIWriter*) = 0;
};
}
Run Code Online (Sandbox Code Playgroud)
在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 );
};
}
Run Code Online (Sandbox Code Playgroud)
IE 删除 #include 并转发声明 IIReader 和 IIWriter。事实上,您也可以通过删除 #include IObject.h 并向前声明类似于上面的内容来避免更多混乱......
virtual void writeObject( Object::IObject* ) = 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |