Переменные базового класса «не объявлены в своей области»

0

Я пытаюсь пройти через C++ наследование, и у меня есть проблема с моим кодом. У меня есть базовый класс Caine и CaineCuPete, полученный из него. Я получаю сообщение об ошибке, когда объявляю конструктор производного класса.

CaineCuPete(int nPete) : Caine(cNume,cHeight,cWeight,cAge,cColor);

Ошибка:

cNume не был объявлен в своем объеме. cHeight не был объявлен в своем объеме....

  • 0
    Вы должны принять их как входные параметры в вашем конструкторе производного класса.
  • 0
    Пожалуйста, предоставьте SSCCE , так как люди могут только догадываться, что может быть cNume и т. Д.
Теги:
inheritance

2 ответа

2
Лучший ответ

Вы должны принять их как входные параметры в свой конструктор производного класса.

CaineCuPete(int nPete, string cNume, double cHeight, 
    double cWeight, double cAge, int cColor ) : Caine(cNume,cHeight,cWeight,cAge,cColor),
Pete ( nPete )
{
}

Эта ссылка объясняет: http://www.learncpp.com/cpp-tutorial/114-constructors-and-initialization-of-derived-classes/

  • 0
    Это также печатает ошибку, говоря, что ожидает { в конце ввода. Конструктор объявлен в файле .cpp, должен ли он быть реализован встроенным?
  • 0
    Да, наверное, потому что вы передаете параметры конструктору базового класса напрямую.
Показать ещё 2 комментария
1

Перед первым использованием вы должны определить переменные cNume,cHeight,cWeight,cAge,cColor. Общей проблемой является то, что они определены после точки использования, а не раньше.

  • 0
    Но это не константы, они будут прочитаны из пользовательского ввода ..
  • 0
    Они все еще должны быть определены где-то. Обратите внимание, что вы не можете использовать переменные-члены CaineCuPete при вызове его базового конструктора.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню