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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
JamesBlack
37 / 37 / 3
Регистрация: 28.07.2009
Сообщений: 144
#1

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

19.06.2010, 01:49. Просмотров 1797. Ответов 8
Метки нет (Все метки)

Я использую шаблон 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);
};
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2010, 01:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблон list и подставляемый класс (C++):

Класс-шаблон list - C++
Хаюшки всем умным людям:) Есть такое задание: Создать класс-шаблон List для работы со списком на основе массива. Реализовать...

Создать класс Элемент списка (Node), а затем класс Список (List) - C++
Задание: Создать класс Элемент списка (Node), а затем класс Список (List). В зависимости от варианта список должен быть одно или...

Описать шаблон класса List - C++
Помогите лузеру сделать прогу. Описать шаблон класса List, который определяет однозвьязний список для элементов любого типа. Написать...

Ошибка при компиляции:"C2955 "Tree": для использования класс шаблон требуется список аргументов шаблон" - C++
Есть класс бинарного дерева, в нем структура. Класс - Tree, структура - list(листик, а не список). При компиляции выдает...

класс List - C++
Здравствуйте! пытаюсь создать шаблонный класс List //List.h #ifndef LIST_H #define LIST_H template <class T> class List ...

Linked List класс - C++
Ребят! Помогите пожалуйста найти ошибку! Я все написал, но чтобы я не делал выбрасывает с ошибкой:( //List.h #pragma once ...

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

Во всяком случае, так я и несколько моих друзей так делают.
1
schdub
2946 / 1291 / 238
Регистрация: 19.01.2009
Сообщений: 3,395
Завершенные тесты: 1
19.06.2010, 02:11 #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?
1
JamesBlack
37 / 37 / 3
Регистрация: 28.07.2009
Сообщений: 144
19.06.2010, 02:38  [ТС] #7
ААААА! Черт! ретурн забыл!!! Позор на мою голову!!!

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

Добавлено через 11 минут
Но вообще, проблема не решена. То я исправил в операторе. А конструктор и не тронут и ошибка никуды не пропала.
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
19.06.2010, 03:38 #8
Так на заметку...
MonitoredItem(const MonitoredItem &mi);
MonitoredItem& operator = (const MonitoredItem &mi);
1
JamesBlack
37 / 37 / 3
Регистрация: 28.07.2009
Сообщений: 144
19.06.2010, 03:39  [ТС] #9
Проблема решена, детская ошибка =)

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

Добавлено через 22 секунды
ISergey, минут 10 назад осознал, но все равно спасибо =)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2010, 03:39
Привет! Вот еще темы с ответами:

Шаблонный класс list - C++
Доброго времени суток, пишу шаблонный list, но вот на определённом этапе возникла ошибка: #ifndef LIST_H #define LIST_H ...

List и абстрактный класс - C++
Доброго времени суток. Есть интересная ситуация. Допустим у нас есть абстрактный клас Book. class Book { public: Book(void); ...

Класс с использованием list - C++
Не получается разобраться с программой (ошибки при компиляции). #include <iostream> #include <list> using namespace std; typedef...

Шаблонный класс List - C++
Имеется 2 шаблонных класса List и Node. Один объявлен другом другого. По идее должно работать, но у компилятора другое мнение на этот счет:...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.06.2010, 03:39
Ответ Создать тему
Опции темы

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