class A
{
private
A();
};
Адрес метода
Ниже простой пример.
class aa {
void b(char*);
void c(void);
};
void aa::b(char *t) {
t="aa";
};
void aa::c() {
void (*f)(char*);
f = b;
};
Ругается на f = b. Почему?
Цитата:
Originally posted by VovaL
Ругается на f = b. Почему?
Ругается на f = b. Почему?
Потому, что указатель на b имеет тип
void (aa::*f)(char*);
а не
void (*f)(char*);
И что надо сделать, чтобы и адрес получить и от ошибки избавиться?
Цитата:
Originally posted by VovaL
И что надо сделать, чтобы и адрес получить и от ошибки избавиться?
И что надо сделать, чтобы и адрес получить и от ошибки избавиться?
Изменить тип указателя или изменить тип метода (сделать его статическим).
Изменил, ошибки нет, но со static перестраховка.
Насколько легален метод обхода
class a {
static a* tthis;
a::a();
...
};
a:a() { tthis=this};
...
и потом добавлять tthis-> в static методе ко всем членам/методам неstatic?
Цитата:
Originally posted by VovaL
Насколько легален метод обхода
Насколько легален метод обхода
Только в том случае, если класс - синглтон, т.е. гарантированно имеет только один экземпляр. Гарантироваться должно соотв. механизмами создания непосредственно в классе, т.е. как минимум иметь закрытый конструктор.
virtul publiс, можно спать спокойно?
Цитата:
Originally posted by VovaL
Т.е. если он используется под вывеской
virtul publiс, можно спать спокойно?
Т.е. если он используется под вывеской
virtul publiс, можно спать спокойно?
я не понял... :)
...
class b: virtual public a,...{
...
};
когда создается один экземпляр класса.
В общем понятно, что при движении всего и вся в сях приходиться за что-то цепляться, как тут за static. Ограничения эти исскуственные - при желании можно сделать релиз для жизни, а не для вазы.
Ps а как выглядит закрытый конструктор?
Цитата:
Originally posted by VovaL
Ps а как выглядит закрытый конструктор?
Ps а как выглядит закрытый конструктор?
Просто объявленный как private
Код:
Что-то у меня складывается впечатление, что ты не той дорогой идешь.
Мне не совсем понятно, зачем хранить указатель на свой (для класса) метод?
Опиши проблему на более высоком уровне, должно быть более элегантное решение.