Ошибка: ожидаемый идентификатор перед "public", ожидаемый "{" перед "public"
Я получаю эту странную ошибку, которую не могу устранить.
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’
2 ответа
Вы должны объявить конструктор BaseClass public
, Таким образом, члены класса доступны из любого места, где виден объект, например:
class BaseClass
{
public: // or protected
BaseClass(const char* aHow = NULL)
{
std::strcpy(ivHow,aHow);
}
};
Все члены данных класса установлены как private
по умолчанию, поэтому они доступны только из других членов того же класса или от их друзей.
Как отметил Ивайло Странджев в комментариях, конструкция может быть установлена как protected
так как
защищенные члены доступны от членов их же класса и от их друзей, но также и от членов их производных классов.
По умолчанию члены являются частными, сделать
class BaseClass
{
protected: //or public
BaseClass(const char* aHow = NULL)
{
std::strcpy(ivHow,aHow);
}
char ivHow[512];
};