二叉树插入()const fpermissive错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树插入()const fpermissive错误相关的知识,希望对你有一定的参考价值。
我必须为我的C ++课程制作自己的BinTree
模板类。问题是,在我的教授的例子中,它全部是用const
制作的,但是我的代码只有在我把const
s取出时编译。在下面的代码中,我总是通过创建新节点在input()
方法中收到错误。 Netbeans引发以下错误:
BinTree.hpp:52:73:错误:从'const BinTree :: node *'无效转换为'BinTree :: node *'[-fpermissive]:key {ch},value {val},top {t},left {nullptr},右{nullptr},计数器{1} {}
我希望你能帮助我解决它。
template <class T> class BinTree {
struct node; //forward deklaration
public:
BinTree();
~BinTree();
int size() const {
return sz;
}
node* find(const char& ) const;
node* insert(const char&);
node* getRoot();
void in_Order();
void level_Order(node*);
void treeHigh();
int count(node*);
private:
struct node {
char key;
T value;
node* top;
node* left;
node* right;
volatile int counter;
explicit node(const char&, const T& = T {}, const node* t = nullptr);
};
node* root;
int sz;
};
template<class T>
BinTree<T>::BinTree() : root{' '}, sz{0} {}
template<class T>
BinTree<T>::node::node(const char& ch, const T& val, const node* t)
: key{ch}, value {val}, top{t}, left{nullptr}, right{nullptr}, counter{1} {}
template<class T> typename BinTree<T>::node*
BinTree<T>::insert(const char& val) {
node * n{root};
node * nn{ new node{val}} ;
if (root == nullptr) {
n = nn;
}
while (n != nullptr) {
if (nn->value == n->key) {
n->counter++;
delete nn;
return n;
}
if (nn->value < n->key) {
if (n->left == nullptr) {
n->left = nn;
nn->top = n;
break;
};
} else n = n->left;
continue;
if (nn->value > n->key) {
if (n->right == nullptr) {
n->right = nn;
nn->top = n;
break;
};
} else n = n->right;
continue;
}
++sz;
return nn;;
}
struct node {
char key;
T value;
node* top; // has to be const node* top
node* left;
node* right;
volatile int counter;
explicit node(const char&, const T& = T {}, const node* t = nullptr);
以上是关于二叉树插入()const fpermissive错误的主要内容,如果未能解决你的问题,请参考以下文章
从'const char *'到'char *'的无效转换[-fpermissive]; VTK-7.1.1编译错误
将 'const QVariant' 作为 'this' 参数传递会丢弃限定符 [-fpermissive]
从 'int' 到 'const char*' 的无效转换 [-fpermissive]| (初学者)
报错const passing as ‘this‘ argument discards qualifiers [-fpermissive]的
奇怪的错误,错误:从‘const char*’到‘char’的无效转换[-fpermissive]
error: passing ‘const AppJniCommand’ as ‘this’ argument discards qualifiers [-fpermissive]