Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
murtukov
8 / 8 / 3
Регистрация: 30.01.2013
Сообщений: 99
#1

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

04.10.2013, 00:40. Просмотров 337. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу понять ошибку (C++):

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

Не могу понять ошибку - C++
#include &lt;iostream.h&gt; #include &lt;math.h&gt; int main () { double x,a,d,h,t,e,g,b,c,z,y,s,rezylt; не могу понять чем программе sqrt...

Не могу понять ошибку - C++
По задумке надо удалить два идущих подряд одинаковых слова. Задумка не выходит, выдаёт бурду... HELP ME!( #include &quot;stdafx.h&quot; ...

не могу понять ошибку - C++
Народ, здарова, сижу над классами, конкретно наследование классов! Компилятор выдает ошибку: Unit1.cpp(143): E2285 Could not find a...

Не могу понять ошибку - C++
Пытаюсь решить вот эту задачу http://www.cyberforum.ru/cpp-beginners/thread356063.html Есть решения на бэйсике вот...

Не могу понять ошибку - C++
#include&lt;iostream.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; int main() { double x=3.741, y=-0.825,z=0.160, A,...

7
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
04.10.2013, 00:48 #2
сдается мне const лишние
0
murtukov
8 / 8 / 3
Регистрация: 30.01.2013
Сообщений: 99
04.10.2013, 01:23  [ТС] #3
HedgehogLu, но в задании написано использовать именно контейнер std::list<Person const *>
0
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
04.10.2013, 01:24 #4
сорри не обратил внимания
0
murtukov
8 / 8 / 3
Регистрация: 30.01.2013
Сообщений: 99
04.10.2013, 01:39  [ТС] #5
HedgehogLu, за что сорри то?) Вам то откуда знать, что у меня в задании написано? Я ведь его не "озвучивал" здесь)
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 01:49 #6
Удалил.
0
HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 260
04.10.2013, 01:55 #7
тогда надо задать функцию следующим образом
C++
1
string retName()const
т.к. именно она ожидается
1
murtukov
8 / 8 / 3
Регистрация: 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
Привет! Вот еще темы с ответами:

никак не могу понять ошибку... - C++
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;fstream&gt; using namespace std; #include &lt;stdlib.h&gt; struct...

Не могу понять ошибку компиляции - C++
Вообщем я только учусь работать в С++, и вот узнал про цикл While, решил создать простую программу как самоучителе и посмотреть как она...

Не могу понять ошибку в цикле for - C++
#include &lt;iostream&gt; using namespace std; class object { public: int num_obj; int num_of_line; int...

Не могу понять свою ошибку! - C++
Здравствуйте! Скажите, в чем моя ошибка... При вводе чисел 1 1 1 в исходный файл программа выдаёт &quot;YES&quot;, но при вводе 2 2 4, программа...


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

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

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