C++ 错误:在‘之前应有标识符;公共’;,预期‘;{&&"x2019;之前&"x2018;公开&"x2019;

C++ 错误:在‘之前应有标识符;公共’;,预期‘;{&&"x2019;之前&"x2018;公开&"x2019;,c++,inheritance,constructor,compiler-errors,C++,Inheritance,Constructor,Compiler Errors,我遇到了一个奇怪的错误,我无法解决 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){}

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

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在评论中指出的,构造也可以设置为
受保护的
,因为

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


默认情况下,成员是私有的,请执行以下操作:

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

    char ivHow[512];
};

你确定你从那段代码中得到了这些错误吗?这里唯一的错误是
BaseClass
有一个私有构造函数,无法从
DerivedClass
构造函数中访问。可以通过使用
std::string
而不是char数组来改进,但这也不是错误的原因。在你的代码中,这听起来像是
>BaseClass
以前从未定义过。它是否在单独的头中?是否包含该头?头是否得到了适当保护?更好的是,我们可以看到您正在编译的确切代码吗?很抱歉……没有提到“public:”.Base Class的构造函数是公共的。-1用于发布您尚未测试的代码。给定的代码不会导致您发布的错误。实际上,受保护的构造函数就足够了。完成!谢谢。