我正在尝试在RAD Studio XE5中使用HP APDK和C ++ Builder。我需要从HP的基类SystemServices派生一个类PlatformServices(或我选择的任何名称)。这是我的标题PlatformServices.h:
/***************************************************************************\
APDK Platform Services
\***************************************************************************/
#ifndef _H_PLATFORMSERVICES
#define _H_PLATFORMSERVICES
#include "header.h" // HP APDK General Header
// class SystemServices {
// };
class PlatformServices : public SystemServices {
~PlatformServices ();
PlatformServices ();
};
#endif
按原样编译,我收到错误:
[bcc32 Error] PlatformServices.h(13): E2303 Type name expected
Full parser context
PlatformServices.cpp(5): #include PlatformServices.h
PlatformServices.h(13): class PlatformServices
但是如果我注释掉#include并取消注释名为SystemServices的空类的定义,则代码编译时没有错误。
我可以按原样预处理代码(在Project Manager中,右键单击PlatformServices并选择Preprocess),我可以看到#include定义了一个格式良好的SystemServices类。
我还禁用了预编译的标头。
这似乎是一个编译器错误,但它是一个谴责他的工具的可怜的工人。我无法相信C ++ Builder会扼杀这个基本的东西,但我无法看到我做错了什么。救命啊!
P.S。我已将完整的代码和项目文件发布在:https://www.dropbox.com/s/sn1377y59r3idtz/apdk.zip
答案 0 :(得分:3)
SystemServices
在apdk
命名空间中声明,因此您需要在代码中直接指定:
class PlatformServices : public apdk::SystemServices
或使用using namespace
声明:
using namespace apdk;
class PlatformServices : public SystemServices