С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 04.06.2011
Сообщений: 15
1

Не могу удалить из вектора

20.09.2013, 08:56. Показов 539. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток.
Есть класс
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
class TModelAnswer
{
private:
     char FAnswer;
     float FProbability;
     AnsiString FExplanation;
     char GetAnswer() {return FAnswer;};
     void SetAnswer(char newAnswer) {if(newAnswer != FAnswer) {FAnswer = newAnswer;}};
     float GetProbability() {return FProbability;};
     void SetProbability(float newProbability) {if(newProbability != FProbability) {FProbability = newProbability;}};
     AnsiString GetExplanation() {return FExplanation;};
     void SetExplanation(AnsiString newExplanation) {if(newExplanation != FExplanation) {FExplanation = newExplanation;}};
public:
     __property char Answer = {read=GetAnswer, write=SetAnswer};
     __property float Probability = {read=GetProbability, write=SetProbability};
     __property AnsiString Explanation = {read=GetExplanation, write=SetExplanation};
     TModelAnswer()
     {
             FAnswer = 'h';
             FProbability = 0.9;
             FExplanation = "hello";
     }
     ~TModelAnswer()
     {
             FAnswer = ' ';
             FProbability = 0;
             FExplanation = "";
     }
};
Создаем вектор с этим классом
C++
1
vector<TModelAnswer> ModelAnswerArray;
Ложим в этот вектор три экземпляра этого класса, меняем одно поле и мне надо удалить измененный элемент вектора
C++
1
2
3
4
5
6
7
        TModelAnswer answer[3];
        for(int i=0; i<3; i++)
        {
                ModelAnswerArray.push_back(answer[i]);
        }
        ModelAnswerArray[1].Probability=0.1;
        ModelAnswerArray.erase(ModelAnswerArray.begin()+1);
Но почему не работает? Ошибка в удалении, что именно?
[C++ Error] _algobase.h(145): E2328 Classes with properties cannot be copied by value
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.09.2013, 08:56
Ответы с готовыми решениями:

Удалить данные из вектора (игра в города) - не могу понять, почему данные остаются в векторе?
Ребят, почему так выводит(все время первый город вектора)? vector&lt;string&gt; wcities; ...

Как удалить часть элементов вектора или как присвоить вектору часть другого вектора?
В общем сабж. Как записать в маткаде следующее? К примеру есть вектор А со 100 элементами. Как...

Не могу задать пароль пользователю. Не могу удалить пользователей
При задании пароля пользователю после нажатия кнопки &quot;Ок&quot; сохраняется какой-то другой пароль. + я...

Удалить первый элемент вектора
Необходимо по вектору А, размерности n, построить вектор В той же длины, но так, чтобы первый его...

5
2686 / 2258 / 244
Регистрация: 03.07.2012
Сообщений: 8,216
Записей в блоге: 1
20.09.2013, 09:19 2
"классы со свойствами не могут быть скопированы по значению"
Наверное, нужен конструктор копирования
0
1 / 1 / 0
Регистрация: 04.06.2011
Сообщений: 15
20.09.2013, 09:22  [ТС] 3
Цитата Сообщение от zer0mail Посмотреть сообщение
Наверное, нужен конструктор копирования
не очень понятно
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.09.2013, 10:37 4
Цитата Сообщение от Sergius X Посмотреть сообщение
Classes with properties
это какой буилдер что ли?
0
Неэпический
18107 / 10694 / 2062
Регистрация: 27.09.2012
Сообщений: 26,927
Записей в блоге: 1
20.09.2013, 10:50 5
Цитата Сообщение от Tulosba Посмотреть сообщение
это какой буилдер что ли?
Ну судя по коду - да
0
1 / 1 / 0
Регистрация: 04.06.2011
Сообщений: 15
22.09.2013, 21:07  [ТС] 6
это билдер. А вот с конца вектора он почему то удаляет без проблем
C++
1
ModelAnswerArray.pop_back();
0
22.09.2013, 21:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2013, 21:07
Помогаю со студенческими работами здесь

удалить непарные элементы вектора
ошибка на этом этапе среда VS2012 ошибка vector subscripting out of range...

Как удалить из вектора объект?
Как удалить из вектора объект?Я пробывал удалять через erase: for (int i = 0;i &lt;...

Удалить повторные элементы вектора
Удалить из одномерного массива(вектора) повторные элементы, оставить по одному элементу из...

Удалить из вектора повторяющиеся элементы
Ввести с клавиатуры вектор A=(a1,a2...an), n=25. удалить из вектора повторяющиеся элементы.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru