Help c классом, плз!!!
Пример инициализации:
vector<MyClass>cont;
cont.resize(10);
for(int iter=0; iter<cont.size(); ++iter)
{
strcpy(cont[iter],mas[iter]); //mas объявляется ранее
}
В чём здесь баг?
Я лично, чтобы не мучиться с указателями, использую класс CString из библиотеки MFC.
Если в классе MyClass не определен оператор [], то строка
strcpy(cont[iter],mas[iter]);
явная глупость.
Для определенности неплохо бы увидеть объявление того самого класса.
Цитата:
Originally posted by segev
_ReZzZ_
Если в классе MyClass не определен оператор [], то строка
strcpy(cont[iter],mas[iter]);
явная глупость.
Для определенности неплохо бы увидеть объявление того самого класса.
_ReZzZ_
Если в классе MyClass не определен оператор [], то строка
strcpy(cont[iter],mas[iter]);
явная глупость.
Для определенности неплохо бы увидеть объявление того самого класса.
А причем тут MyClass?
Оператор [] относится к шаблонному классу vector, который в данном случае инстанируется типом MyClass.
Только вот, видимо, _ReZzZ_ хотел получить записью cont[iter] указатель на некоторый экземпляр класса MyClass, но в данном случае вернется сам экземпляр класса MyClass.
Кроме того, я бы категорически не советовал копировать содержимое объектов используя strcpy(). "А почему,- мне лень объяснять..." :о)
Цитата:
Originally posted by xelos
Я лично, чтобы не мучиться с указателями, использую класс CString из библиотеки MFC.
Я лично, чтобы не мучиться с указателями, использую класс CString из библиотеки MFC.
А string из STL религия использовать не позволяет?
Да, что-то я невнимательно посмотрел. cont[iter] действительно вернет ссылку на экземпляр MyClass. Не понятно как это вообще скомпилировалось, ведь strcpy ждет char*.
Ошибка безусловно в прямом доступе к памяти объекта. Такие вещи нужно делать в конструкторе или через переопределение оператора = .