Мне было поручено создать разреженную матрицу.В процессе я попал в проблему.Я понял, что не могу получить доступ к члену дочернего класса, который хранится в родительском классе.
Я «погуглил» мою проблему, и я понял, что были некоторые проблемы с приведением типов.Я попробовал и не работал.
Пример кода:
main.cpp
#include <iostream>
template <typename T>
class Node
{
public: // public for example purposes
Node<T> *down, *right;
public:
explicit Node(Node<T> *d, Node<T> *r) : down(d), right(r) {}
};
template <typename T>
class HNode : public Node<T>
{
private:
unsigned idxValue;
public:
HNode(unsigned iv) : idxValue(iv), Node<T>(nullptr, nullptr) {}
};
template <typename T>
class ENode : public Node<T>
{
public: // public for example purposes
unsigned row;
unsigned col;
int value;
public:
ENode(unsigned r, unsigned c, int v) : row(r), col(c), value(v), Node<T>(nullptr, nullptr)
{}
};
int main(void)
{
Node<int> *root;
root = new Node<int>(nullptr, nullptr);
root->right = new HNode<int>(0);
root->down = new HNode<int>(0);
root->right->down = new ENode<int>(0, 0, 10);
std::cout << root->right->down->value << '\n';
}
Это ошибка, которую я получаю:
error: no member named 'value' in 'Node<int>'
std::cout << root->right->down->value << '\n';