Русское сообщество по скриптингу

Как перегрузить оператор присваивания?

Все вопросы по скриптингу для Metamod, помощь в редактировании плагинов.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для
Metamod.


Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник плагина.

Как перегрузить оператор присваивания?

Сообщение Chuvi » 11 ноя 2013, 21:05

Ситуация:
У меня есть класс
Код: Выделить всё

template 
<typename T>
class CSymb
{
public:
 T Get(){return Symb}
private:
T Symb;
 


Подскажите, пожалуйста, как мне перегрузить оператор = чтобы можно было делать такие финтоплясы:
Код: Выделить всё

void SomeFunc
()
{
CSymb<int*> Symb;//По ряду причин здесь всегда указатель на какой-либо тип.
int SomeAnotherVar=Symb;
SomeAnotherVar++;
Symb=SomeAnotherVar;
}

 
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Как перегрузить оператор присваивания?

Сообщение 6a6kin » 12 ноя 2013, 20:22

Chuvi, кол-во на тот случай, если пропустил что-то в маске или сигнатуре, а плагин я имел в виду другой, не который сигнатуру генерирует, а который все функции генерирует, т.е. .h и .cpp файлы.
На заказ не пишу.
Аватара пользователя
6a6kin
Скриптер
 
Сообщения: 332
Зарегистрирован: 09 мар 2010, 16:40
Благодарил (а): 38 раз.
Поблагодарили: 278 раз.

Re: Как перегрузить оператор присваивания?

Сообщение Chuvi » 12 ноя 2013, 21:25

В общем, вроде всё перегрузил.
Теперь у меня там такой финтопляс для функций
Код: Выделить всё

CHookedFunc
<*func_typeHookedFunc(традиционные параметры конструктора);
HookedFunc(bool);//Думаете это вызов функции? А вот фиг. Это включатель/выключатель хука. По умолчанию стоит true.
//А сама функция вызывается так
(*HookedFunc)(параметры функции);
 

Кстати, перед вызовом оригинала хук автоматом снимается.
Да, я пробовал различные варианты, аля
*HookedFunc(параметры);
&HookedFunc(параметры);
но они не прокатили.

С одной стороны, теперь явно видно, вызывается ли перехваченная функция или нет.
А с другой.... если этот код будет кто-то разбирать, возможно он сломает мозг.
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Как перегрузить оператор присваивания?

Сообщение Asmodai » 13 ноя 2013, 01:09

Это называется ООП головного мозга) Полюбому уже нашли, как main в класс засунуть))
Аватара пользователя
Asmodai
Адмирал
 
Сообщения: 466
Зарегистрирован: 24 фев 2011, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 393 раз.
Языки программирования: Counter-Strike 1.6

Re: Как перегрузить оператор присваивания?

Сообщение Chuvi » 13 ноя 2013, 01:52

Asmodai, а можно и без main-a. В каком-нибудь глобальном конструкторе пнуть движок, и ищи-свищи, где он там запускается. (только вот компилятор ругаться будет, если main-a нет)


в ответ на картинку: что-то мне подсказывает, что классы CFuncHook, CFunc, CSymb, CRevGenerator, CInterfaseInitialiser и ещё какие-то мне вполне пригодятся в дальнейших проектах.
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Пред.

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8