Форум программистов, компьютерный форум CyberForum.ru

Шаблон list и подставляемый класс - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
19.06.2010, 01:49     Шаблон list и подставляемый класс #1
Я использую шаблон list для временного хранения элементов своего класса. Проблема в том, что он ругается, мол нету конструктора копий. Но этот конструктор есть!!! Что делать?
ошибка
error C2558: struct 'MonitoredItem': нет доступных конструкторов копии или конструктор копии объявлен как 'explicit'


Вот описание моего класса на всякий случай:
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
typedef unsigned int uint;
struct MonitoredItem
{
    uint id;
    char *url;
    uint urlsize;
    ClientConnection *connection;
 
    MonitoredItem();
    MonitoredItem(MonitoredItem &mi);
    ~MonitoredItem();
 
    void Set(uint i, char *u, uint s);
    void Clear();
    MonitoredItem& operator = (MonitoredItem &mi);
};
 
MonitoredItem::MonitoredItem() {id = 0; url = NULL; urlsize = 0;};
 
MonitoredItem::MonitoredItem(MonitoredItem &mi)
{
    id = mi.id;
    urlsize = mi.urlsize;
    url = new char [urlsize];
    memcpy(url, mi.url, urlsize);
    connection = mi.connection;
};
 
MonitoredItem& MonitoredItem::operator = (MonitoredItem &mi)
{
    if (url) delete [] url;
    if (connection) delete connection;
    MonitoredItem tmp(mi);
    id = tmp.id;
    urlsize = tmp.urlsize;
    url = new char[urlsize];
    strncpy(url, tmp.url, urlsize);
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2010, 01:49     Шаблон list и подставляемый класс
Посмотрите здесь:

List и абстрактный класс C++
C++ Описать шаблон класса List
C++ класс List
класс-шаблон C++
Класс-шаблон list C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
19.06.2010, 01:54     Шаблон list и подставляемый класс #2
почемуто мне кажеться что в struct можно хоронить только переменные зачем там функции не понятно
JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
19.06.2010, 02:04  [ТС]     Шаблон list и подставляемый класс #3
Suroviy, struct от class в C++ отличается только одним: в class без меток (public, private, protected) все члены и методы по умолчанию private, а в struct - public. Какбэ, других различий нет, и юзать их можно абсолютно аналогично. Методы - в том числе.
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
19.06.2010, 02:05     Шаблон list и подставляемый класс #4
понял тебя, не когда не задумывался об этом.
JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
19.06.2010, 02:08  [ТС]     Шаблон list и подставляемый класс #5
Suroviy, только изза этого различия, чаще всего юзают структуры там, где данные прятать не надобно. Ну и чисто по привычке - для небольших классов. А классы - с прайвейт член-данными, и когда это достаточно сложный объект с кучей методов.

Во всяком случае, так я и несколько моих друзей так делают.
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,210
Завершенные тесты: 1
19.06.2010, 02:11     Шаблон list и подставляемый класс #6
C++
1
2
3
4
5
6
7
8
9
10
MonitoredItem& MonitoredItem::operator = (MonitoredItem &mi)
{
        if (url) delete [] url;
        if (connection) delete connection;
        MonitoredItem tmp(mi);
        id = tmp.id;
        urlsize = tmp.urlsize;
        url = new char[urlsize];
        strncpy(url, tmp.url, urlsize);
};
где return? и что есть ClientConnection?
JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
19.06.2010, 02:38  [ТС]     Шаблон list и подставляемый класс #7
ААААА! Черт! ретурн забыл!!! Позор на мою голову!!!

А КлайнтКоннекшн - это я юзаю библиотеку одного моего друга для сокетов. Оч удобная и протестенная, без багов.

Добавлено через 11 минут
Но вообще, проблема не решена. То я исправил в операторе. А конструктор и не тронут и ошибка никуды не пропала.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1330 / 863 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
19.06.2010, 03:38     Шаблон list и подставляемый класс #8
Так на заметку...
MonitoredItem(const MonitoredItem &mi);
MonitoredItem& operator = (const MonitoredItem &mi);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2010, 03:39     Шаблон list и подставляемый класс
Еще ссылки по теме:

Шаблонный класс List C++
C++ Класс с использованием list
Класс-Шаблон C++

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

Или воспользуйтесь поиском по форуму:
JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
19.06.2010, 03:39  [ТС]     Шаблон list и подставляемый класс #9
Проблема решена, детская ошибка =)

Сишник не считал мой метод конструктором копии, ибо свято верил, что в конструктор копии должна передаваться константная ссылка =)

Добавлено через 22 секунды
ISergey, минут 10 назад осознал, но все равно спасибо =)
Yandex
Объявления
19.06.2010, 03:39     Шаблон list и подставляемый класс
Ответ Создать тему
Опции темы

Текущее время: 07:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru