Инициализация членов данных базового класса с использованием конструктора частного класса - PullRequest
0 голосов
/ 13 сентября 2018

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

нет подходящей функции для вызова 'Flower :: Flower ()' Rose (строка n= "Нет цветка", строка c = "Красный"): color (c) {}

, хотя я дал параметрический конструктор в своем классе Flower, он по-прежнему не говорит о вызове соответствующей функции.

#include <iostream>
#include <string>
using namespace std;


class Flower
{

public:
string name;


Flower (string n):name (n)
  {
  }


void getFlowerName ()
  {
    cout << name << " " << "is" << " ";
} 

};


class Rose:private Flower
{               // Inherit Flower as private
public:
string color;


    /* Initialize name and color data members */ 
Rose (string n = "No flower", string c = "Red"):color (c)
  {
  } 

void getFlowerName (Rose & r)
  {
    cout << r.color << endl;
  } 

    //  using Flower::getFlowerName ;// Allow call to  getFlowerName() method in the base class
};


class Rose:private Flower
{               // Inherit Flower as private
public:
string color;


    /* Initialize name and color data members */ 
Rose (string n = "No flower", string c = "Red"):color (c)
  {
  } 

void getFlowerName (Rose & r)
  {
    cout << r.color << endl;
  } 

using Flower::getFlowerName;    // Allow call to  getFlowerName() method in 
                                   the base class
};

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Производные классы должны вызывать базовые классы:

class Rose : private Flower
{
public:
    std::string color;

    Rose (const std::string& n = "No flower",
          const std::string& c = "Red") : Flower(n), color(c)
    {
    }
// ...
};

Так как в настоящее время вы неявно вызываете конструктор Flower по умолчанию, но он не существует.

0 голосов
/ 13 сентября 2018

Создать Flower::Flower() конструктор по умолчанию.

Flower(){ name = NULL; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...