我遇到了这个奇怪的错误,我无法解决。
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’
答案 0 :(得分:4)
您必须声明BaseClass public
的构造函数。通过这样做,可以从对象可见的任何地方访问类的成员,如:
class BaseClass
{
public: // or protected
BaseClass(const char* aHow = NULL)
{
std::strcpy(ivHow,aHow);
}
};
默认情况下,班级的所有数据成员都设置为private
,因此只能从同一班级的其他成员或friends中访问这些成员。
正如Ivaylo Strandjev在评论中指出的那样,构造可以设置为protected
,因为
受保护的成员可以从同一个类的成员和他们的朋友访问,也可以从他们派生类的成员访问。
答案 1 :(得分:1)
默认情况下,成员是私有的,执行
class BaseClass
{
protected: //or public
BaseClass(const char* aHow = NULL)
{
std::strcpy(ivHow,aHow);
}
char ivHow[512];
};