错误:预期标识符在“公共”之前,预期“{”在“公共”之前

error: expected identifier before ‘public’, expected ‘{’ before ‘public’

本文关键字:之前 公共 预期 错误 标识符      更新时间:2023-10-16

我遇到了这个奇怪的错误,我无法解决。

class BaseClass
{
    public:BaseClass(const char* aHow = NULL)
    {
        std::strcpy(ivHow,aHow);
    }
    char ivHow[512];
};
class DerivedClass : public BaseClass
{
    DerivedClass (const char* dcHow):BaseClass (dcHow){}
};

我收到以下错误:

../trunk/inc/Sample.h: In constructor ‘DerivedClass::DerivedClass(const char*)’:
../trunk/inc/Sample.h: error: expected identifier before ‘public’
../trunk/inc/Sample.h: error: expected ‘{’ before ‘public’

你必须声明 BaseClass public 的构造函数。通过这样做,可以从对象可见的任何位置访问类的成员,如下所示:

class BaseClass
{
    public: // or protected
    BaseClass(const char* aHow = NULL)
    {
    std::strcpy(ivHow,aHow);
    }
};

默认情况下,类的所有数据成员都设置为private,因此只能从同一类的其他成员或其好友中访问它们。

正如Ivaylo Strandjev在评论中指出的那样,该结构也可以设置为protected,因为

受保护的成员可以从其同一类的成员及其朋友访问,也可以从其派生类的成员访问。

默认情况下,成员是私有的,请执行

class BaseClass
{
    protected: //or public
    BaseClass(const char* aHow = NULL)
    {
        std::strcpy(ivHow,aHow);
    }
    char ivHow[512];
};