Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Help c классом, плз!!!

558
28 февраля 2003 года
_ReZzZ_
14 / / 20.08.2000
Я создал класс который содержит несколько char* - членов, затем я создал несколько объектов этого класса, но когда я инициализирую член - char* каждого из объектов, им всем присваивается одно и то-же значение, несмотря на то, что в конструкторе этого класса я с помощью new выделил память для каждого char* - члена.

Пример инициализации:

vector<MyClass>cont;

cont.resize(10);

for(int iter=0; iter<cont.size(); ++iter)
{
strcpy(cont[iter],mas[iter]); //mas объявляется ранее
}

В чём здесь баг?
319
01 марта 2003 года
xelos
577 / / 27.02.2003
Я лично, чтобы не мучиться с указателями, использую класс CString из библиотеки MFC.
2.0K
02 марта 2003 года
segev
67 / / 19.01.2003
_ReZzZ_
Если в классе MyClass не определен оператор [], то строка
strcpy(cont[iter],mas[iter]);
явная глупость.
Для определенности неплохо бы увидеть объявление того самого класса.
3
02 марта 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by segev
_ReZzZ_
Если в классе MyClass не определен оператор [], то строка
strcpy(cont[iter],mas[iter]);
явная глупость.
Для определенности неплохо бы увидеть объявление того самого класса.



А причем тут MyClass?
Оператор [] относится к шаблонному классу vector, который в данном случае инстанируется типом MyClass.
Только вот, видимо, _ReZzZ_ хотел получить записью cont[iter] указатель на некоторый экземпляр класса MyClass, но в данном случае вернется сам экземпляр класса MyClass.
Кроме того, я бы категорически не советовал копировать содержимое объектов используя strcpy(). "А почему,- мне лень объяснять..." :о)

1.9K
02 марта 2003 года
kswapd
93 / / 08.02.2003
Цитата:
Originally posted by xelos
Я лично, чтобы не мучиться с указателями, использую класс CString из библиотеки MFC.



А string из STL религия использовать не позволяет?

2.0K
03 марта 2003 года
segev
67 / / 19.01.2003
Green
Да, что-то я невнимательно посмотрел. cont[iter] действительно вернет ссылку на экземпляр MyClass. Не понятно как это вообще скомпилировалось, ведь strcpy ждет char*.
Ошибка безусловно в прямом доступе к памяти объекта. Такие вещи нужно делать в конструкторе или через переопределение оператора = .
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог