не могли бы вы помочь мне.
Я передаю себя чисто виртуальной функции самого себя.
n->dataCallback(handler, n, hangup);
где n - мой указатель класса, а dataCallback - его собственная (чистая) виртуальная функция (я знаю, что это не имеет смысла, мне просто интересно, почему так происходит, что я опишу ниже).
так что теперь в объявлении:
void MyClass::dataCallback(int handler, void *cbData, bool hangup) {
MyClass *This = (MyClass*) cbData;
....
}
Теперь, когда я сравниваю Это (переменная выше) с этим (указатель объекта) во время выполнения, я получаю:
- Значения указателей (адресов объекта) различны.
- При проверке memeber varaible (This-> member) я нахожу в них разные значения. (Правильное значение в этом, тогда как Это содержит неопределенное (для меня случайное) значение. Обратите внимание, что на стороне вызывающего абонента значение, конечно, правильное, поэтому оно кажется волшебным образом изменяется во время самого вызова, и другого кода нет). между.
Как, черт возьми, это возможно? Любая идея?
Я провел 2 часа, размышляя над этим, также спросил других программистов безрезультатно.