Вопрос-Ответ (C++)
|
|
Kornival | Дата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1 |
The Witcher
Сейчас нет на сайте
| Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.
Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
|
|
| |
pelmenka | Дата: Четверг, 01 Августа 2013, 18:09 | Сообщение # 1041 |
Драгоценный Тунеядец
Сейчас нет на сайте
| В деструкторе класса пишишь delete [] pi;
Сталина в каждый дом!
|
|
| |
goldsphere | Дата: Четверг, 01 Августа 2013, 18:32 | Сообщение # 1042 |
заслуженный участник
Сейчас нет на сайте
| Так деструктору неизвестен pi. ------------------------------------- Появился у меня вариант идентифицировать предметы по ID, и вместо vector<Item*> vi; хранить просто динамический массив int *ArrayID. Но тогда Класс инвентаря должен иметь доступ к объектам классов предметов.
FinderX - Android Аркада
Сообщение отредактировал goldsphere - Четверг, 01 Августа 2013, 18:36 |
|
| |
GameMix | Дата: Воскресенье, 04 Августа 2013, 11:43 | Сообщение # 1043 |
старожил
Сейчас нет на сайте
| Привет знатокам C++. До последнего пытался справиться с проблемой сам, но не вышло. Есть класс:Код class MyStrings { public: MyStrings() {} ~MyStrings() {} char[] GetText() {return Text;} private: char Text[255]; Проблема в том, что я не знаю, как возвращать массив символов (не значение типа String), чтобы можно было использовать функцию класса следующим образом:Код MyStrings stroka; cout << stroka.GetText(); Нужна помощь в реализации такого, если это возможно.
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
Archido | Дата: Воскресенье, 04 Августа 2013, 12:06 | Сообщение # 1044 |
Сэнсэй
Сейчас нет на сайте
| GameMix Так указатель же надо вернуть: Код const char* GetText() const { return Text; }
Можно еще так: Код class MyStrings { ...
operator const char* () const { return Text; }
... };
MyStrings stroka; std::cout << stroka;
Добавлено (04.08.2013, 12:06) --------------------------------------------- goldsphere Почему бы просто в ф-ции удаления инвентаря не делать delete vi[_index]; ? Тока нужен виртуальный деструктор.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Воскресенье, 04 Августа 2013, 12:11 |
|
| |
GameMix | Дата: Воскресенье, 04 Августа 2013, 12:43 | Сообщение # 1045 |
старожил
Сейчас нет на сайте
| Archido, благодарю! Второй вариант вообще супер, как я и хотел
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
FatherIsDark | Дата: Воскресенье, 04 Августа 2013, 14:46 | Сообщение # 1046 |
почетный гость
Сейчас нет на сайте
| Извините за тупой вопрос ,ну отличии Float и Double какие
|
|
| |
stalker5889 | Дата: Воскресенье, 04 Августа 2013, 15:00 | Сообщение # 1047 |
Свободный игродел
Сейчас нет на сайте
| Цитата (FatherIsDark) Извините за тупой вопрос ,ну отличии Float и Double какие У Double больше знаков после запятой можно поставить. Т.е. больше точность и диапазон значений. float - размер 4 байта, точность 7 знаков. double - размер 8 байт, точность 16 знаков.
Сообщение отредактировал stalker5889 - Воскресенье, 04 Августа 2013, 15:01 |
|
| |
FatherIsDark | Дата: Воскресенье, 04 Августа 2013, 15:05 | Сообщение # 1048 |
почетный гость
Сейчас нет на сайте
| Цитата (stalker5889) У Double больше знаков после запятой можно поставить. Т.е. больше точность и диапазон значений. float - размер 4 байта, точность 7 знаков. double - размер 8 байт, точность 16 знаков. так почему везде используется Double ? это же не оптимальный вариант
|
|
| |
stalker5889 | Дата: Воскресенье, 04 Августа 2013, 15:15 | Сообщение # 1049 |
Свободный игродел
Сейчас нет на сайте
| Цитата (FatherIsDark) так почему везде используется Double ? это же не оптимальный вариант Боятся что у float диапазон значений закончится. Диапазон float от 3.4028 в 38 степени до -3.4028 в -38 степени Диапазон double от 1.7977 в 308 степени до -1.7977 в -308 степени Если твои числа не будут больше/меньше 162100411395741389517,43616825285 то юзай float.
Сообщение отредактировал stalker5889 - Воскресенье, 04 Августа 2013, 15:20 |
|
| |
FatherIsDark | Дата: Воскресенье, 04 Августа 2013, 15:20 | Сообщение # 1050 |
почетный гость
Сейчас нет на сайте
| Цитата (stalker5889) Боятся что у float диапазон значений закончится. biggrin Диапазон float от 3.4028 в 38 степени до -3.4028 в -38 степени Диапазон double от 1.7977 в 308 степени до -1.7977 в -308 степени ну может в этом проблема лагов Minecraft?, как лучше сделать массив игрового мира?
|
|
| |
stalker5889 | Дата: Воскресенье, 04 Августа 2013, 15:23 | Сообщение # 1051 |
Свободный игродел
Сейчас нет на сайте
| Цитата (FatherIsDark) как лучше сделать массив игрового мира? Если в 2D int map[размерность][размерность]; Если в 3D int map[размерность][размерность][размерность]; Цитата (FatherIsDark) ну может в этом проблема лагов Minecraft?, Типо того. Только там int (или long int).
Сообщение отредактировал stalker5889 - Воскресенье, 04 Августа 2013, 15:25 |
|
| |
FatherIsDark | Дата: Воскресенье, 04 Августа 2013, 15:28 | Сообщение # 1052 |
почетный гость
Сейчас нет на сайте
| Цитата (stalker5889) Типо того. Только там int (или long int). Скорее Long int и double для координат
|
|
| |
pelmenka | Дата: Воскресенье, 04 Августа 2013, 15:36 | Сообщение # 1053 |
Драгоценный Тунеядец
Сейчас нет на сайте
| Цитата (FatherIsDark) Скорее Long int и double для координат Нотч давно сказал, что там int
Сталина в каждый дом!
|
|
| |
FatherIsDark | Дата: Воскресенье, 04 Августа 2013, 15:39 | Сообщение # 1054 |
почетный гость
Сейчас нет на сайте
| Цитата (pelmenka) Нотч давно сказал, что там int Minecraft Coder Pack сказал.
|
|
| |
TideS | Дата: Пятница, 09 Августа 2013, 06:36 | Сообщение # 1055 |
заслуженный участник
Сейчас нет на сайте
| Цитата (pelmenka) Нотч давно сказал, что там int Таки интересно почему. Во всех движках, с которыми работал, везде координаты именно во float.
|
|
| |
goldsphere | Дата: Суббота, 10 Августа 2013, 15:10 | Сообщение # 1056 |
заслуженный участник
Сейчас нет на сайте
| TideS, ну, для более плавного передвижения. в int допустим передвижение самое медленное 1(не считая ноль). А во float или double можно дробные значения.
Добавлено (10.08.2013, 15:10) --------------------------------------------- Archido, я уже решил проблему. Я сделал не вектор, а динамический массив. Потом просто перегрузил функцию AddToInventory, для каждого предмета и делал в ней ItemArray[_index] = new тип предмета. И в деструкторе инвентаря удалял занятые ячейки.
FinderX - Android Аркада
Сообщение отредактировал goldsphere - Суббота, 10 Августа 2013, 15:10 |
|
| |
GameMix | Дата: Суббота, 17 Августа 2013, 09:41 | Сообщение # 1057 |
старожил
Сейчас нет на сайте
| Привет. Код bool ObjectSetSprite(short objID, short sprID) { if (objID < nom && sprID < Nspr) { hgeSprite *_spr = new hgeSprite(*Sprite[sprID]); Object[objID]->sprite_index = _spr; delete _spr; // эта строчка даёт сбой _spr = 0; return true; } else return false; } Как известно, ненужные указатели нужно удалять и обнулять, но почему-то в таких случаях программа даёт сбой. Не понимаю, почему, ведь указатель дальше в функции не используется. А при повторном обращении к функции он снова создаётся, поэтому всё должно быть нормально, на мой взгляд. Объясните, в чем проблема?
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
pelmenka | Дата: Суббота, 17 Августа 2013, 10:18 | Сообщение # 1058 |
Драгоценный Тунеядец
Сейчас нет на сайте
| GameMix, мб delete [] _spt ?
Сталина в каждый дом!
|
|
| |
GameMix | Дата: Суббота, 17 Августа 2013, 11:01 | Сообщение # 1059 |
старожил
Сейчас нет на сайте
| pelmenka, нет, у меня _spr - указатель, а не массив указателей.
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
Нохчи | Дата: Суббота, 17 Августа 2013, 11:49 | Сообщение # 1060 |
заслуженный участник
Сейчас нет на сайте
| GameMix, а память вообще выделяется? Проверь.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |