Как инициализировать объект производного класса, когда у производного класса и базового класса есть параметризованные конструкторы? - PullRequest
1 голос
/ 13 сентября 2011

У меня проблема с инициализацией объектов.Ниже приведен фрагмент кода:

#include <iostream>
#include <conio.h>
using namespace std;

class Base
{
public:
Base(int a)
{
    m_a = a;
}
private:
int m_a;

};

class Derived:public Base
{
public:
Derived(char a)
{
    m_a = a;
}
private:
char m_a;

};


void main()
{

_getch();

}

Компиляция приведенного выше кода приводит к следующей ошибке C2512: «База»: нет подходящего конструктора по умолчанию, доступного

Я знаю, что поскольку производный классоба базовых класса имеют только параметризованные конструкторы, которые мне нужны для инициализации объекта базового класса в конструкторе производного класса.Но я не знаю, как это сделать.Может кто-нибудь сказать, пожалуйста, что не так в приведенном выше коде?

Ответы [ 2 ]

6 голосов
/ 13 сентября 2011
    public:
    Derived(char a):Base(/*int Parameter*/),m_a(a)
    {

    }
0 голосов
/ 15 сентября 2011

После создания трейлов я еще один способ инициализировать базовый класс, Ниже приведен код,

#include <iostream>
#include <conio.h>
using namespace std;

class Base
{
public:
Base(int a)
{
    m_a = a;
}
private:
int m_a;

};

class Derived:public Base
{
public:
Derived(int b, char a):Base(b)
{
    m_a = a;
}
private:
char m_a;

};


void main()
{
    Derived d(10,'A');

_getch();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...