У меня есть шаблонный класс btree и я определил struct Node в открытых определениях файла заголовка
struct Node {
vector<Node> chi_;
vector<T> val_;
Node *par_;
Node(size_t n, Node *parent) : par_(parent) {
chi_.reserve(n+1);
val_.reserve(n);
}
~Node() {
chi_.clear();
val_.clear();
}
};
Как и мой конструктор оператора / / copy, я хочу создать рекурсивную функцию addAll'
template <typename T>
void btree<T>::addAll(struct Node* &one, struct Node* const& two) {
for(unsigned int a = 0; a < two.val_.size(); a++)
one.val_.push_back(two.val_.at(a));
for(unsigned int a = 0; a < two.chi_.size(); a++) {
Node *newNode = new Node(max, one);
addAll(newNode, two.chi_.at(a));
one.chi_.push_back(newNode);
}
}
Объявление функции странно для меня - я попробовал что-то простое, например btree: addAll (Node & one, const Node & two), но это породило довольно много трудных для понимания ошибок компилятора, но я наконец-то получилчтобы принять существование указанной функции, объявив ее выше + имеющей
void addAll(struct Node*&, struct Node* const&);
в моем заголовочном файле.
Проблема, с которой я столкнулся сейчас, заключается в доступе к элементам данныхУзел внутри моей функции, я получаю следующую ошибку компиляции:
btree.tem:28:23: error: request for member 'val_' in 'two', which is of non-class type 'btree<long int>::Node* const'
btree.tem:29:3: error: request for member 'val_' in 'one', which is of non-class type 'btree<long int>::Node*'
btree.tem:29:3: error: request for member 'val_' in 'two', which is of non-class type 'btree<long int>::Node* const'
btree.tem:31:23: error: request for member 'chi_' in 'two', which is of non-class type 'btree<long int>::Node* const'
btree.tem:33:3: error: request for member 'chi_' in 'two', which is of non-class type 'btree<long int>::Node* const'
btree.tem:34:3: error: request for member 'chi_' in 'one', which is of non-class type 'btree<long int>::Node*'
Не совсем уверен, правильно ли я здесь заявляю или нет, но эта конкретная проблема действительно ставит меня в тупик (приближается день иполовина разных подходов возиться с ним, но безрезультатно)