Witam , mam za zadanie wdrążyć w swoim projekcie dziedziczenie z szablonu klasy w którym wszystkie metody są czysto wirtualne. I nie ma z tym żadnego problemu,
pytanie jest po co? co zyskuje w tym momencie?
Wciąż nie mogę przestawiać polimorficznego wskaźnika ponieważ specyfikuje w jego deklaracji typ szablonu.
Szablonu nie mogę utworzyć bo jest czysto wirtualny. wyczytałem w necie że ponoć to jest observer pattern, ale niezbyt rozumiem jak go wykorzystać w tych szablonach.
Zamieszczam przykładowy kod problemu.
#include <iostream>
using namespace std;
void print(string msg){
cout << msg << "\n";
}
template <class k> class A{
public:
virtual void foo(k klasa)=0;
};
class B :public A <B>{
public:
void spam(){print("spam mhhh... spam");}
void foo(B klasa) override{
klasa.spam();
}
};
class C :public A <C>{
public:
void foobar(){print("Foo... \n ...Bar \n");}
void foo(C klasa) override{
klasa.foobar();
}
};
int main() {
std::cout << "Hello, World!" << std::endl;
B b;
b.foo(b);
C c;
c.foo(c);
A<B>* a;
a = &b;
a->foo(b);
//tego nie da sie zrobic
// a = &c;
// a->foo(c);
return 0;
}
Z góry dziękuje za pomysły i sugestie.