template<class T>
class Tree{
****
public:
****
void show();
}
-----
class SomeClass{
***
public:
void show(){
cout << 5;
}
}
-------
int main(){
Tree<SomeClass> t;
t.show();
}
Как это сделать?
Проблема в том, что таких SomeCLass будет несколько штук
void showTree(Node *path){ // path - узел дерева
if (path != nullptr){
if (path->left != nullptr && path->left->key != 0){
showTree(path->left);
}
if (path->center != nullptr && path->center->key != 0){
showTree(path->center);
}
<b>path->t->show();</b> //вот так чтобы работало, чтобы вызывался метод show для разных объектов свой
if (path->right != nullptr && path->right->key != 0){
showTree(path->right);
}
}
}
Tree
. Что такое Node
? И почему экземпляр этого типа передается по указателю? Почему showTree
является глобальной функцией? У тебя в вопросе совсем другое написано. template<class T>
class Tree{
****
public:
****
void showTree(){
T().showTree();
};
};
T().showTree();
- ты точно понимаешь, что тут происходит?SomeClass::show
должна быть именно методом? T *t;
t->showTree();
T *t;
t->showTree();
t
. А указатель этот у тебя висячий, в нем у тебя мусор.Tree<T>::showTree
.template<typename T>
class Tree: public T
{
// ... здесь show объявлять не нужно
};
template<typename T>
class Tree
{
T _some;
public:
void show()
{
_some.show()
}
};
template<class T>
class Tree{
****
public:
****
void showTree(){
T().showTree();
};
};