-6

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

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’
4

2 回答 2

4

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

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

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

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

受保护的成员可以从它们的同一个类的成员和它们的朋友访问,也可以从它们的派生类的成员访问。

于 2013-09-18T12:16:04.583 回答
1

默认情况下,成员是私有的,做

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

    char ivHow[512];
};
于 2013-09-18T12:17:29.090 回答