Как объявить конструктор копирования в производном классе без конструктора по умолчанию в базе?

Взгляните на следующий пример:

class Base
{
protected:
    int m_nValue;

public:
    Base(int nValue)
        : m_nValue(nValue)
    {
    }

    const char* GetName() { return "Base"; }
    int GetValue() { return m_nValue; }
};

class Derived: public Base
{
public:
    Derived(int nValue)
        : Base(nValue)
    {
    }
    Derived( const Base &d ){
        std::cout << "copy constructor\n";
    }

    const char* GetName() { return "Derived"; }
    int GetValueDoubled() { return m_nValue * 2; }
};

Этот код постоянно выдает мне ошибку о том, что для базового класса нет конструктора по умолчанию. Когда я это объявляю, все в порядке. Но когда я этого не делаю, код не работает.

Как я могу объявить конструктор копирования в производном классе без объявления конструктора по умолчанию в базовом классе?

Thnaks.

14
задан unresolved_external 16 February 2012 в 10:26
поделиться