C ++ Builder E2303预期的类型名称

时间:2014-06-28 17:58:44

标签: c++builder

我正在尝试在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

1 个答案:

答案 0 :(得分:3)

SystemServicesapdk命名空间中声明,因此您需要在代码中直接指定:

class PlatformServices : public apdk::SystemServices

或使用using namespace声明:

using namespace apdk;

class PlatformServices : public SystemServices