Что мне делать с & amp; этим?

У меня есть код, где мне нужно использовать двойные указатели. В частности, мне любопытно, почему я не могу сказать &this в контексте, где …

class Obj {
public:
void bar();
};

void foo(Obj **foopa)
{
// do etc with your foopa.  maybe lose the foopa altogether. its nasty imo.
}

void Obj::bar()
{
// call foo(Obj **)
foo(&this);  // Compiler Err:  Address extension must be an lvalue or a function designator.
}

Lvalue? обозначение функции? Люблю слышать в ответ.

0

Решение

Поскольку «this» является специальным указателем, и вы не должны его менять, но вы можете сделать что-то вроде этого, не помещайте «Obj * t» в функцию, потому что она уничтожается в конце функции, поэтому она должна быть статичный.

class Obj;
Obj *t;

class Obj {
public:
void bar();
};

void foo(Obj **foopa)
{
// do etc with your foopa.  maybe lose the foopa altogether. its nasty imo.
}

void Obj::bar()
{
// call foo(Obj **)
t = this;
foo(&t);  // Compiler Err:  Address extension must be an lvalue or a function designator.
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]