не могли бы вы мне помочь. Я передаю себя чистой виртуальной функции.C++ передача себя самому себе mistery
n->dataCallback(handler, n, hangup);
где п мой указатель класса и dataCallback является его собственной (чистой) виртуальной функцией (я знаю, что это не имеет никакого смысла, я просто удивляюсь, почему это происходит, что я опишу ниже).
так что теперь в объявлении:
void MyClass::dataCallback(int handler, void *cbData, bool hangup) {
MyClass *This = (MyClass*) cbData;
....
}
Теперь, когда я сравниваю Это (выше varaiable) к этому (указатель объекта) во время выполнения я получаю:
- Значения poiners (адреса объекта) различны.
- При проверке memeber varaible (This-> member) я нахожу в них разные значения. (Правильное значение в этом случае, в то время как это содержит неопределенное (мне случайное) значение. Обратите внимание, что на стороне вызывающего абонента значение, конечно, правильно, поэтому кажется, что оно волшебным образом изменяется во время самого вызова, и нет другого кода между ними.
Как на земле это возможно? Любая идея?
Я провел 2 часа медитации на этом, также обратилась к другим программистам никаких результатов.
Вы используете множественное наследование? – sth
Просмотрите мои изменения. Stack Overflow использует [markdown] (http://stackoverflow.com/editing-help), и вы должны по крайней мере познакомиться с основными частями, такими как отступы кода. – meagar
Может ли [это] (http://stackoverflow.com/a/3725440/140719) или [что] (http://stackoverflow.com/a/3108745/140719) вам помочь? – sbi