Здравствуйте, eao197, Вы писали:
>И еще, где можно прочитать про гламурность, очарование и шарм в программах?
Ну...
Смотри, что я придумал:
const означает, что мы не можем менять ноду.
DEEP_CONST означает ноду и всех её потомков.
#ifdef NDEBUG
#define DEEP_CONST const
#else
#define DEEP_CONST const volatile
#define DEEP_CONST_DEFINED
#endif
struct TreeNode
{
private:
TreeNode *right, *left;
int value;
public:
int get_val() DEEP_CONST { return value; }
void set_value(int i) { value = i; }
TreeNode *get_right() const { return right; };
TreeNode *get_left() const { return left; };
#if defined(DEEP_CONST_DEFINED)
TreeNode DEEP_CONST *get_right() DEEP_CONST { return right; };
TreeNode DEEP_CONST *get_left() DEEP_CONST { return left; };
#endif
};
void f(TreeNode DEEP_CONST *t)
{
t->get_right()->set_value(10); //ошибка
t->get_right()->get_val(); //ok
}
void g(TreeNode const *t)
{
t->get_right()->set_value(10); //ok
}
int main()
{
}
Может, у тебя есть ещё какие-то идеи?
10.01.06 22:22: Перенесено модератором из 'Мусор' — Кодт