Ошибка "no matching function"
программисты! Учу C++ по книне Васильева А.Н. "Программирование на С++ ". Столкнулся с такой проблемой, что не могу скомпилировать код из главы "Наследование обобщенных классов". Ниже приведу сам код. Пишу все в CodeBlocks. Ошибка:
error: no matching function for call to 'Charlie<std::__cxx11::basic_string<char>, и тд>'
Что тут не так?
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
template<class A> class Alpha
{
public:
A alpha;
Alpha(A a)
{
alpha = a;
}
void show()
{
cout << "Поле Alpha: " << alpha << endl;
}
};
template<class B> class Bravo
{
public:
B bravo;
Bravo(B b)
{
bravo = b;
}
void show()
{
cout << "Поле Bravo: " << bravo << endl;
}
};
template<class A, class B, class C> class Charlie : public Alpha<A>, public Bravo<B>
{
public:
C charlie;
Charlie(C c) :Alpha<A>(a), Bravo<B>(b)
{
charlie = c;
}
void show()
{
Alpha<A>::show();
Bravo<B>::show();
cout << "Поле Charlie: " << charlie << endl;
}
};
int main()
{
system("chcp 1251>nul");
Charlie<string, char, int> objA("текст", 'A', 100);
Charlie<int, double, char> objB(200, 5.5, 'B');
objA.show();
objB.show();
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Достаточно написать корректный конструктор....
template<class A, class B, class C>
Charlie(A a, B b, C c) :Alpha<A>(a), Bravo<B>(b)
{
charlie = c;
}