Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
fitochay
14 / 14 / 1
Регистрация: 14.03.2015
Сообщений: 113
1

Error: could not convert ‘0l’ from ‘long int’ to ‘Tree::Node*&’

28.11.2015, 19:23. Просмотров 1576. Ответов 2
Метки нет (Все метки)

Делаю бинарное дерево. При перегрузке метода добавления элемента компилятор выдает ошибку.

Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
 
using namespace std;
 
class Tree
{
    private: 
        struct Node
        {
            int x;
            Node *parent, *left, *right;
            
            Node(int num, Node *p=NULL, Node *l=NULL, Node *r=NULL)
            {
                x = num;
                parent = p;
                left = l;
                right = r;
            }
        };
        Node *root;
    
    public:
        Tree(int num)
        {
            //root = NULL;
            addNode(num);
        }
        
        int searchNodePub(int);
        bool findNode(int);
        
        void addNode(int num) {
            addNode(num, root);
        }
        
        void delNode();
        
        bool isEmpty();
        void printTree();
        
    protected:
        Node searchNodePriv(int);
        void addNode(int num, Node *&root, Node *&p=NULL);
};
 
bool Tree :: isEmpty()
{
    if (root == NULL)
        return true;
    else
        return false;
}
 
void Tree :: addNode(int num, Node *&node, Node *&p)
{
    if (isEmpty()) {
        node = new Node(num,p);
    }
    else if (num < node->x) {
        addNode(num,node,node->left);
    }
    else if (num > node->x) {
        addNode(num,node,node->right);
    }
}
Ошибки:
Кликните здесь для просмотра всего текста

g++ -Wall -c "1.cpp" (в каталоге: /home/paper/MEGA/2 курс/Структура и алгоритмы обработки данных/Деревья/binar)
In file included from /usr/include/time.h:37:0,
from /usr/include/pthread.h:24,
from /usr/include/x86_64-linux-gnu/c++/4.9/bits/gthr-default.h:35,
from /usr/include/x86_64-linux-gnu/c++/4.9/bits/gthr.h:148,
from /usr/include/c++/4.9/ext/atomicity.h:35,
from /usr/include/c++/4.9/bits/ios_base.h:39,
from /usr/include/c++/4.9/ios:42,
from /usr/include/c++/4.9/ostream:38,
from /usr/include/c++/4.9/iostream:39,
from 1.cpp:1:
1.cpp:44:47: error: could not convert ‘0l’ from ‘long int’ to ‘Tree::Node*&’
void addNode(int num, Node *&root, Node *&p=NULL);
^
1.cpp: In member function ‘void Tree::addNode(int)’:
1.cpp:34:21: error: invalid initialization of non-const reference of type ‘Tree::Node*&’ from an rvalue of type ‘long int’
addNode(num, root);
^
1.cpp:44:8: note: in passing argument 3 of ‘void Tree::addNode(int, Tree::Node*&, Tree::Node*&)’
void addNode(int num, Node *&root, Node *&p=NULL);
^
Сборка завершилась с ошибкой.


Объясните пожалуйста ошибку.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2015, 19:23
Ответы с готовыми решениями:

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)'
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int)
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй...

Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p
Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в...

Ошибка: Cube::Cube(Cube &&)': cannot convert argument 1 from 'int' to 'int *[]'
Не могу разобраться. Есть массив : int indices = { 1,2,3, 4,5,6 }; У класса конструктор:...

cannot convert parameter 1 from 'int' to 'std::string &'
string kolvo(string &amp;S, int &amp;k) { unsigned int i; for(i=1; i&lt;S.length(); i++) if(S=='B' &amp;&amp;...

2
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
28.11.2015, 20:40 2
26-ю строку верни на место. И ссылка на указатель не может быть NULL.
1
fitochay
14 / 14 / 1
Регистрация: 14.03.2015
Сообщений: 113
28.11.2015, 20:48  [ТС] 3
nmcf, компилируется. Но тогда вопрос, как мне тогда занулять указатель на родителя, если при вызове функции он не указывается?

Добавлено через 1 минуту
Я понял. Спасибо большое.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2015, 20:48

Error Cannot convert 'void *' to 'unsigned int'
bool TForm4::OpenCOMPort(String Port) { wchar_t DeviceName; StrPCopy(DeviceName,...

Error cannot convert 'int*' to 'const char*'
Сама задача: Описать структуру с именем NOTE, содержащую следующие поля: -фамилия, имя; -номер...

[C++ Error] Unit1.cpp(50): E2034 Cannot convert 'AnsiString' to 'int'
помогите пожалуйста void __fastcall TForm1::J() { int m=StringGrid2-&gt;Cells.d]; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.