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

Vector ругается на использование классов E2397 и Invalid pointer operation - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать 3 одномерных массива одинаковой размерности http://www.cyberforum.ru/cpp-beginners/thread536330.html
1. Создать 3 одномерных массива одинаковой размерности. а) I массив заполнить случайными числами в пределах от -8 до 8. б) Значения элементов этого массива нужно проверить на кратность 3 и...
C++ Stable_sort сортировка вектора по последнему символу Доброе время суток! Очень срочно помогите плз! void setText() { string number; FILE *file; char* file_name = "file.txt"; file = fopen( file_name, "w" ); fputs( "12 41 55 74 95 67... http://www.cyberforum.ru/cpp-beginners/thread536328.html
C++ Процент схожести строк
Всем здрасте. Вообщем дали мне по лабораторным ОСиСП такое задание: 1) Выполнить индивидуальное задание последовательным алгоритмом; 2) Выполнить индивидуальное задание параллельным алгоритмом...
C++ Ассемблеровская вставка, указатель &
Всем привет. Возник вопрос. Чем в ассемблеровской вставке заменить сишный оператор &? В контексте __asm & cчитается оператором AND. __asm { push &value } error C2400: синтаксическая ошибка во...
C++ Определить количество различных элементов массива http://www.cyberforum.ru/cpp-beginners/thread536305.html
Ввести с клавиатуры количество n элементов динамического массива; распределить память для его размещения и ввести с клавиатуры вещественные значения элементов этого массива. Определить количество...
C++ Переписать с паскаля на С++ Переведите плиз вт это в С++ Заранее Сапасибо!!!! var ms:array of integer; max,s,k,i:integer; begin подробнее

Показать сообщение отдельно
Deimon
35 / 35 / 2
Регистрация: 29.08.2009
Сообщений: 178
02.04.2012, 10:57  [ТС]
Цитата Сообщение от alexey31415 Посмотреть сообщение
может нужно создать конструктор копии,чтоб он мог копировать значения в вектор?
добавил конструктор копий... заработало
C++
1
2
3
4
5
6
7
8
CBot::CBot(const CBot & OriginalBot)
{
    m_Pic = new GTB();
    m_Pic->LoadFromFile("./solder.bmp");
    m_Pic->Transparent = true;
    //m_pos.Set(OriginalBot.ReturnX(),OriginalBot.ReturnY());
    m_pos.Set(rand()%800, rand()%600);
}
Но почему-то теперь я в замешательстве, а должен был бы быть рад. Я читал книгу про STL, но там все примеры были с базовыми типами данных (int,char,string). Можете мне объяснить в кратце, но понятно, по какому принципу добавляются в контейнеры новые объекты класса? Почему нельзя создавать новый объект без копирования? Если есть ссылка где бы были расписаны подробности работы контейнеров STL - буду очень рад.

Добавлено через 30 минут
Я совершенно неграмотно составил конструктор копий (так как мне надо было рандомное позиционирование, я использовал Random()), но в результате когда создавался очередной объект CBot, неумещяющийся в контейнер, контейнер расширялся копируя старые объекты и меня заданные им позиции. Решил сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CBot::CBot(const CBot & OriginalBot)
{
    m_Pic = new GTB();
    m_Pic->LoadFromFile("./solder.bmp");
    m_Pic->Transparent = true;
    m_pos.Set(OriginalBot.ReturnX(),OriginalBot.ReturnY());
}
 
CBot::CBot(const CBot & OriginalBot, short X, short Y)
{
    m_Pic = new GTB();
    m_Pic->LoadFromFile("./solder.bmp");
    m_Pic->Transparent = true;
    m_pos.Set(X,Y);
}
Но все ровно не понимаю зачем тогда мне CBot(short,short)

Вопрос Почему функции Random и Rand()% всегда выдают одинаковую последовательность "рандомных" значений. (Запускаю программу последовательность - 0, 152, 364, 32 ... закрываю программу, запускаю снова и абсолютно в таком же порядке выдаются значения) Я понимаю что абсолютного рандомного значения у компьютера не будет. Но я пробывал с разными интервалами времени и всеровно одно и тоже (тоесть с внутренними мс времени работы это ни как не связано). Почему так?

Понял как без CBot(const CBot&, short,short) сделать

C++
1
2
3
//посто добавлять таким макаром
v_bots.push_back(CBot(CBot(Random(800),Random(600))));
//ссори если баяню, не спец.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru