LINUX.ORG.RU

Сделать из дефайна методы.

 


0

1

Привет. Есть у меня такая штука

#define SC_GENERATE(varType, varName, funName)\
protected: varType varName;\
public: virtual varType get##funName(void) const { return varName; }\
public: virtual void set##funName(varType var){ varName = var; }
Хочется как-то сделать со смартом такое. Типа
#define SC_GENERATE(varType, varName, funName)\
protected: boost::shared_ptr<varType> varName;\
public: virtual varType get##funName(void) const { return varName.get(); }\
public: virtual void set##funName(varType var){ varName.get() = var; }
Ну вот как-то так. Как такое правильно сделать? Спсб.

#define SC_GENERATE(varType, varName, funName)\
protected: boost::shared_ptr<varType> varName;\
public: virtual boost::shared_ptr<varType> get##funName(void) const { return varName; }\
public: virtual void set##funName(boost::shared_ptr<varType> var){ varName = var; }

но так лучше не делать

Reset ★★★★★
()

блин, ещё один не читавший описание от смартпойнтеров, тебе зачем там shared_ptr вообще?

shty ★★★★★
()
Ответ на: комментарий от Reset

но так лучше не делать

Почему?

Хочу подправить одну игрулю, там такого наворотили, думаю засунуть это в смарты, там в деструкторах такое твориться, без слез не посмотришь

Boy_from_Jungle ★★★★
() автор топика
Ответ на: комментарий от Boy_from_Jungle

1) тут суть в том, что любой owning pointer сушественно отличается идеологически на практике от shared pointer, несмотря на весьма тривиальные различия в коде реализации и лежащей в основе smart pointer'ов общей идее

2) я бы вообще посмотрел нафуа там #define (ох уж эти сишники), что-то мне подсказывает что в игрушке он особо не нужен

shty ★★★★★
()
Ответ на: комментарий от Boy_from_Jungle

Хочу подправить одну игрулю, там такого наворотили, думаю засунуть это в смарты, там в деструкторах такое твориться, без слез не посмотришь

Решил доворотить?

Объясни, нафейхоа тебе макросы? Если геттер и сеттер ничего не делают, то что мешает вынести поле в public?

Pavval ★★★★★
()

Насилуют язык, а потом говорят, что он костыльный...

placeholder
()
Ответ на: комментарий от Pavval

Объясни, нафейхоа тебе макросы?

затем чтобы не помалать остальное.

Boy_from_Jungle ★★★★
() автор топика
Ответ на: комментарий от geekless

Ты слово virtual хорошо видишь в коде, мой невнимательный друг?

Ах virtual...

Pavval ★★★★★
()
Ответ на: комментарий от com

Хотя и его тут скорее всего не понадобится.

Не понятно в чём вопрос. То что ты дал в качестве примера - не работает? Я правильно понял?

com
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.