我有错误“在非成员函数中无效使用'this' ”
编写代码以避免此错误的正确方法是什么。
树.h:
#ifndef TREE_H
#define TREE_H
template <typename T>
class Node;
class Tree
{
public:
Tree();
template <typename TNodeType>
Node<TNodeType> elaborate(Node<TNodeType> &node);
Tree* self();
void doSomething();
};
template <typename TNodeType>
Node<TNodeType> createNew() {
Node<TNodeType> model(this); //<-- ERROR HERE
return model;
}
#endif // TREE_H
节点.h:
#ifndef NODE_H
#define NODE_H
#include <tree.h>
template <typename TNodeType>
class Node
{
public:
Node(Tree *tree);
TNodeType current();
private:
Tree *_tree;
};
template <typename TNodeType>
Node<TNodeType>::Node(Tree *tree):
_tree(tree)
{
_tree->doSomething();
}
template <typename TNodeType>
TNodeType Node<TNodeType>::current()
{
//some code here
}
#endif // NODE_H
解决了。
在tree.h 中,我跳过了以下声明:
template <typename TNodeType>
Node<TNodeType> createNew();
而且我在“ createNew() ”之前的定义中忘记了“ Tree:: ”
我同意这个问题可以避免;-)。对不起