Пятница, 17 Мая 2024, 07:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Программирование » C/C++ » Вопрос-Ответ (C++) (Вопросы по С++ задаём здесь.)
Вопрос-Ответ (C++)
KornivalДата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1
The Witcher
Сейчас нет на сайте
Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.

Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
maXimBestUAДата: Четверг, 24 Мая 2012, 16:04 | Сообщение # 341
почетный гость
Сейчас нет на сайте
Спасибо
offzoomДата: Суббота, 26 Мая 2012, 00:20 | Сообщение # 342
был не раз
Сейчас нет на сайте
Друзья! Два вопроса!
1) с#
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
this.Close();
}
Как этот код будет выглядить в c++?

2)Как создать в visual c++ windows form, вот так:
Есть Form1 и Button1, нужно создать в Form1, окошко с суммой 100 000 и при нажатие на button1 из суммы вычитается 500.
ganstermДата: Суббота, 26 Мая 2012, 16:37 | Сообщение # 343
частый гость
Сейчас нет на сайте
У меня возникла небольшая проблема с классами.
Есть класс родителя и класс-наследник.
В классе наследнике при определенных условиях должно быть самоудаление этого класса. Вопрос, как удалить этот класс?
Гуглил про виртуальный деструктор он почему-то выдает ошибку.
DemeronДата: Суббота, 26 Мая 2012, 17:03 | Сообщение # 344
User created in C++
Сейчас нет на сайте
Quote (gansterm)
У меня возникла небольшая проблема с классами.
Есть класс родителя и класс-наследник.
В классе наследнике при определенных условиях должно быть самоудаление этого класса. Вопрос, как удалить этот класс?
Гуглил про виртуальный деструктор он почему-то выдает ошибку.

Может конечно глупость, но первая мысль:
Code

class a
{
.....
};

class b:public a
{
public:
~b(){}//destructor
...
};

ganstermДата: Суббота, 26 Мая 2012, 17:13 | Сообщение # 345
частый гость
Сейчас нет на сайте
Quote (Demeron)
Может конечно глупость, но первая мысль: Code class a { ..... }; class b:public a { public: ~b(){}//destructor ... };

при попытке вызвать delete this в классе б возникает это
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall asteriod::~asteriod(void)" (??1asteriod@@QAE@XZ) в функции "public: void * __thiscall asteriod::`scalar deleting destructor'(unsigned int)" (??_Gasteriod@@QAEPAXI@Z) asteriods.obj SpaseRangers
НохчиДата: Суббота, 26 Мая 2012, 21:37 | Сообщение # 346
заслуженный участник
Сейчас нет на сайте
Quote (gansterm)
при попытке вызвать delete this

Ошибка не из-за delete this. Покажие больше кода.

Quote (gansterm)
В классе наследнике при определенных условиях должно быть самоудаление этого класса.

Code
class a
{
     DropIt()
    {
       delete this;
    }
}


Многие вопросы по Windows отпадут, если посмотреть тут

Сообщение отредактировал Нохчи - Суббота, 26 Мая 2012, 21:38
ganstermДата: Воскресенье, 27 Мая 2012, 10:52 | Сообщение # 347
частый гость
Сейчас нет на сайте
Расскажу по подробнее:
класс А находится в векторе. В функции кадра обновляю все объекты
Code
for(int i=0;i <= dyn.size()-1;i++){
             if(dyn.at(i)->hp<1){dyn.at(i)->Drop();dyn.erase(dyn.begin()+i);}
                      };


Quote (Нохчи)
class a {      DropIt()     {        delete this;     } }

Я по книжке недавно начал изучать наследственность, этим кодом мы освобождаем памать под Б класс?
НохчиДата: Воскресенье, 27 Мая 2012, 21:00 | Сообщение # 348
заслуженный участник
Сейчас нет на сайте
Наследование тут не при чем. Освободится память, выделенная под экземпляр, на который указывает this.
Твой код из #347 правильный.


Многие вопросы по Windows отпадут, если посмотреть тут
ganstermДата: Воскресенье, 27 Мая 2012, 22:06 | Сообщение # 349
частый гость
Сейчас нет на сайте
Все ,спасибо дальше сам разберусь biggrin
clidiДата: Суббота, 02 Июня 2012, 20:23 | Сообщение # 350
почетный гость
Сейчас нет на сайте
Может кто знает, при создании объекта в динамической памяти не вызывается деструктор при удалении. Так и должно быть?
Пример: Weapon* w = new Weapon();
А если писать Weapon w; то все нормальна.
DemeronДата: Суббота, 02 Июня 2012, 20:28 | Сообщение # 351
User created in C++
Сейчас нет на сайте
Quote (clidi)
Так и должно быть?

Вроде как да) Удаляй через delete.

Code
Weapon* w = new Weapon();
delete w;

Weapon* w2 = new Weapon[10];
delete[] w2;
clidiДата: Суббота, 02 Июня 2012, 20:49 | Сообщение # 352
почетный гость
Сейчас нет на сайте
Demeron, Ну должен же быть какой то способ удалять через функции
DemeronДата: Суббота, 02 Июня 2012, 23:04 | Сообщение # 353
User created in C++
Сейчас нет на сайте
Quote (clidi)
Demeron, Ну должен же быть какой то способ удалять через функции

чем тебе такой способ не нравиться?
НохчиДата: Суббота, 02 Июня 2012, 23:28 | Сообщение # 354
заслуженный участник
Сейчас нет на сайте
Как это деструктор не вызывается? Должен.

Добавлено (02.06.2012, 23:28)
---------------------------------------------
clidi, а как ты его потом удаляешь? Мне почему-то кажется, что никак и у тебя там тупо утечка памяти.


Многие вопросы по Windows отпадут, если посмотреть тут
clidiДата: Воскресенье, 03 Июня 2012, 00:03 | Сообщение # 355
почетный гость
Сейчас нет на сайте
Нохчи,
Я в деструкторе написал cout вывод и он не показался, то есть не вызывается. Никак не удаляю, так как просто проверял. Понятно конечно что из мейн метода например можно удалить (delete).
НохчиДата: Воскресенье, 03 Июня 2012, 00:06 | Сообщение # 356
заслуженный участник
Сейчас нет на сайте
На каждый new обязательно нужно делать явный delete, иначе будет утечка памяти.

Многие вопросы по Windows отпадут, если посмотреть тут
clidiДата: Вторник, 05 Июня 2012, 19:52 | Сообщение # 357
почетный гость
Сейчас нет на сайте
Подскажите про перечу адреса в reference параметр функции.
const int& parameter то же самое, что и int const & parameter или нет?

Вопрос не актуален.


Сообщение отредактировал clidi - Среда, 06 Июня 2012, 23:29
SaiteiДата: Суббота, 09 Июня 2012, 23:56 | Сообщение # 358
старожил
Сейчас нет на сайте
Почему я не могу юзать getline()? Подчеркивает красным сразу же...
Подключал вот что:
Code
#include <stdio.h>
#include <iostream>
#include <conio.h>  
using namespace std;
SnuuxДата: Воскресенье, 10 Июня 2012, 00:39 | Сообщение # 359
постоянный участник
Сейчас нет на сайте
Saitei, полный код скинь, наверно дело в чем то другом.
SaiteiДата: Четверг, 14 Июня 2012, 16:23 | Сообщение # 360
старожил
Сейчас нет на сайте
switch умеет работать с текстовыми условиями?
Ну... Я хотел сделать так:
Code
#include <iostream>
using namespace std;
char a[255];
int main()
{
switch(a)
{
case olololo
{
cout << Yep!<<endl;
}

}
}
Форум игроделов » Программирование » C/C++ » Вопрос-Ответ (C++) (Вопросы по С++ задаём здесь.)
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг