hi
I cant find a way to initialize or call the constructors of 2 base classes from a another one using inheritance
Code:
#include <iostream>
using std::cout;
using std::endl;
//Base class
class Base{
public:
virtual void print() = 0;
};
//derived 1
class DerivadaUno:virtual public Base{
public:
DerivadaUno(int n1){numeroUno = n1;}
void imprimir(){cout << "DerivadaUno\n"
<< numeroUno;}
private:
int numeroUno;
};
//derived 2
class DerivadaDos:virtual public Base{
public:
DerivadaDos(int n2){numeroDos = n2;}
void imprimir(){cout << "DerivadaDos\n" <<
<< numeroDos;}
private:
int numeroDos;
};
//class multy derived from derived 1 and 2
class Multiple:public DerivadaUno, public DerivadaDos{
public:
//cant initialize DerivadaUno and DerivaDaDos
//why and how?
Multiple(int nu1, int nu2)
:DerivadaUno(nu1), DerivadaDos(nu2){}
void imprimir(){DerivadaDos::imprimir();}
};
int main()
{
Multiple ambas(25,40);
DerivadaUno uno;
DerivadaDos dos;
Base *arreglo[3];
arreglo[0] = &ambas;
arreglo[1] = &uno;
arreglo[2] = &dos;
for(int i = 0; i < 3; i++)
arreglo[i]->imprimir();
cout << endl;
return 0;
}
ok if you see i'm trying to call the explicit constructors but the compiler generates 3 error messages:
thanks for any help and please excuse my poor english
----------------------------------------------------------------------------------
main.cpp
C:\programas c++\ejer22_14\main.cpp(47) : error C2664: '__thiscall Multiple::Multiple(const class Multiple &)' : cannot convert parameter 1 from 'const int' to 'const class Multiple &'
Reason: cannot convert from 'const int' to 'const class Multiple'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\programas c++\ejer22_14\main.cpp(48) : error C2512: 'DerivadaUno' : no appropriate default constructor available
C:\programas c++\ejer22_14\main.cpp(49) : error C2512: 'DerivadaDos' : no appropriate default constructor available
Error executing cl.exe.
ejer22_14.exe - 3 error(s), 0 warning(s)
----------------------------------------------------------------------------------