Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
murtukov
8 / 8 / 5
Регистрация: 30.01.2013
Сообщений: 99
1

Не могу понять ошибку

04.10.2013, 00:40. Просмотров 360. Ответов 7
Метки нет (Все метки)

Всем привет.

Делаю задание из универа. В принципе все работает с использованием дружественного класса, но хочется обойтись без friend'ов. Попробовал и вот что вышло:

Все просто, есть два класса: Person и Database. Database хранит объекты Person с помощью контейнера std::list<Person const *>. Ошибка возникает в строке 44.

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
#include <iostream>
#include <list>
using namespace std;
class Person;
typedef list<Person const *> Perslist;
////////////////////////////////////////////////////////////////
class Person
{
    string name;
 
public:
    Person()
    {}
 
    Person(const char *n)
    { name = n; }
 
    virtual ~Person()
    {}
 
    string retName()
    { return name; }
 
    void getName(const char *n)
    { name = n; }
//friend class Database;
};
////////////////////////////////////////////////////////////////
class Database
{
    Perslist plist;
 
public:
 
    void add(Person const *p)
    {
        plist.push_back(p);
    }
 
    void printList()
    {
        for (Perslist::const_iterator it = plist.begin(), end = plist.end(); it != end; ++it)
            {
                cout << (*it)->retName() << endl;
//                cout << (*it)->name << endl:
            }
    }
};
////////////////////////////////////////////////////////////////
int main()
{
    Person p1("Timur"), p2("Max"), p3("Alexander");
 
    Database db;
 
    db.add(&p1);
    db.add(&p3);
 
    db.printList();
 
    return 0;
}
Выдает вот такую ошибку:

44|error: passing 'const Person' as 'this' argument of 'std::string Person::retName()' discards qualifiers [-fpermissive]|

Плохо знаком с работой контейнеров и итераторов. Если назовете хорошие ресурсы для быстрого ознакомления, буду благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 00:40
Ответы с готовыми решениями:

Не могу понять ошибку
#include &lt;iostream.h&gt; #include &lt;math.h&gt; int main () { double...

Не могу понять ошибку
Пытаюсь решить вот эту задачу...

Не могу понять ошибку
По задумке надо удалить два идущих подряд одинаковых слова. Задумка не выходит,...

Не могу понять ошибку
Вот такая программа, реализующая односвязный список: #include &lt;iostream&gt;...

не могу понять ошибку
Народ, здарова, сижу над классами, конкретно наследование классов! Компилятор...

7
HedgehogLu
147 / 82 / 10
Регистрация: 04.09.2013
Сообщений: 261
04.10.2013, 00:48 2
сдается мне const лишние
0
murtukov
8 / 8 / 5
Регистрация: 30.01.2013
Сообщений: 99
04.10.2013, 01:23  [ТС] 3
HedgehogLu, но в задании написано использовать именно контейнер std::list<Person const *>
0
HedgehogLu
147 / 82 / 10
Регистрация: 04.09.2013
Сообщений: 261
04.10.2013, 01:24 4
сорри не обратил внимания
0
murtukov
8 / 8 / 5
Регистрация: 30.01.2013
Сообщений: 99
04.10.2013, 01:39  [ТС] 5
HedgehogLu, за что сорри то?) Вам то откуда знать, что у меня в задании написано? Я ведь его не "озвучивал" здесь)
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 01:49 6
Удалил.
0
HedgehogLu
147 / 82 / 10
Регистрация: 04.09.2013
Сообщений: 261
04.10.2013, 01:55 7
тогда надо задать функцию следующим образом
C++
1
string retName()const
т.к. именно она ожидается
1
murtukov
8 / 8 / 5
Регистрация: 30.01.2013
Сообщений: 99
04.10.2013, 02:18  [ТС] 8
HedgehogLu, точно! Спасибо) Тема закрыта.
0
04.10.2013, 02:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 02:18

не могу понять ошибку
#include &lt;iostream&gt; using namespace std; int main(); { double a=0,...

Не могу понять ошибку
#include&lt;iostream.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt;...

никак не могу понять ошибку...
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;fstream&gt;...


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

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

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