1 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 123
1

не понимаю что за ошибка

19.05.2013, 03:54. Показов 618. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
привет всем! как исправить ошибку, который выдает компилятор
/home/september/console/priority_queueNodeATD/pq_node.cpp:-1: In member function 'Key PQ_node<Key, Value>::key_top() const':
/home/september/console/priority_queueNodeATD/pq_node.cpp:31: ошибка: expected primary-expression before '>' token
/home/september/console/priority_queueNodeATD/pq_node.cpp:31: ошибка: expected primary-expression before ')' token

создал класс PQ_node и унаследовал класс Dictionary...
вот код

Dictionary
C++
1
2
3
4
5
6
7
8
9
10
template<typename Key, typename Value>
void Dictionary<Key, Value>::key_show(void visit(Key)) const
{
    Node_key* tmp = pm_head_key;
    while(tmp)
    {
        visit(tmp->key);
        tmp = tmp->next;
    }
}
PQ_node
C++
1
2
3
4
5
6
7
8
9
10
11
template<typename Key, typename Value>
void PQ_node<Key, Value>::visit(Key key)
{ m_key.push_back(key); }
 
template<typename Key, typename Value>
Key PQ_node<Key, Value>::key_top() const
{
    Key tmp(0);
    Dictionary<Key, Value>::key_show(visit<Key>); //вот здесь ругается компилятор
    return tmp;
}
Добавлено через 1 час 27 минут
а если написать функцию visit() в клиенской части программы, то все работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vector<int> r;
 
template<typename Key>
void visit(Key data)
{
    r.push_back(data);
}
 
int main()
{
    PQ_node<int, int> p2(12, 54);
    p2.key_push(45);
    cout<<"empty p2 "<<p2.key_empty()<<endl;
    cout<<"size p2 "<<p2.key_size()<<endl;
    p2.key_show(visit<int>);
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2013, 03:54
Ответы с готовыми решениями:

Не понимаю что за ошибка
Здравствуйте, вот та часть программы. employ.h #include &quot;pch.h&quot; #ifndef EMLOYEE_H #define...

Не понимаю что за ошибка в модуле
Не могу понять, где ошибка, пишет &quot;ошибочная переменная,контролирующая цикл FOR&quot; на for I:=1 to n...

Ошибка в книге или я что то не понимаю ?
Задача по наследованию: Написать класс &quot;Служащие&quot; которые получают только процент от продаж и...

ООП..ошибка ввода-вывода...не понимаю что не так..
Работа с ООП...вот сама программа: program Biblioteka; uses SysUtils, Myb in...

7
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
19.05.2013, 12:27 2
C++
1
2
3
key_show(void visit(Key))
//...
key_show(visit<Key>)
0
1 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 123
19.05.2013, 22:29  [ТС] 3
и что это значит ?

Добавлено через 14 секунд
Croessmah, и что это значит ?
0
3 / 3 / 1
Регистрация: 18.05.2013
Сообщений: 11
19.05.2013, 22:51 4
у тебя функция key_show ничерта не принимает так как функция visit имеет тип void
0
1 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 123
19.05.2013, 22:58  [ТС] 5
SpeZnaC, как это исправить ?
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
19.05.2013, 23:06 6
да можно тип посетителя не хардкодить, а в параметры шаблона запихнуть. компилятор сам выведет нужный тип.
тогда не только указатели на функции прокатят, но и объекты какие-нибудь:
C++
1
2
3
4
5
6
7
8
9
10
template<typename Key, typename Value, typename Visitor>
void Dictionary<Key, Value>::key_show(Visitor visit) const
{
    Node_key* tmp = pm_head_key;
    while(tmp)
    {
        visit(tmp->key);
        tmp = tmp->next;
    }
}
1
1 / 1 / 1
Регистрация: 02.01.2013
Сообщений: 123
19.05.2013, 23:49  [ТС] 7
DU, все равно ошибка...

C++
1
2
3
4
5
6
7
template<typename Key, typename Value>
Key PQ_node<Key, Value>::key_top() const
{
    Key tmp(0);
    Dictionary<Key, Value>::key_show(visit<Key>); //вот здесь ругается компилятор
    return tmp;
}
может неправильно передаю visit() ?
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
20.05.2013, 22:32 8
я не обратил внимание на то, что у вас там не свободная функция а метод шаблона.
попробуйте по аналогии сделать:
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
#include <iostream>
 
using namespace std;
 
template <typename Key, typename Value>
class Dictionary
{
public:
  template <typename Visitor>
  void enumerate(Visitor visit);
};
 
template <typename Key, typename Value> // template class
template <typename Visitor>             // template method
void Dictionary<Key, Value>::enumerate(Visitor visit)
{
  visit(Value());
}
 
 
template <typename T>
void print(const T& obj)
{
  std::cout << obj << std::endl;
}
 
 
int main()
{
 
  Dictionary<int, int> d;
  d.enumerate(&print<int>);
  return 0;
}
1
20.05.2013, 22:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2013, 22:32
Помогаю со студенческими работами здесь

Может быть я что-то не понимаю? Подскажите, где ошибка...
Здравствуйте! Снова я, наверняка уже поднадоевший вам @asn007, со своими дибильными вопросами...

Не понимаю, что за ошибка в коде. Скрин ошибки внутри
Я не понимаю, что за ошибка и как исправить, помогите, кому не трудно, разобраться... Работаю с...

Не понимаю что хочет делфи, когда запускаю прогу всегда ошибка
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Вылетает ошибка ".exe has triggered a breakpoint" Не понимаю, что не так
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { int pSourceData = 10;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru