我正在尝试这样的事情
//A.h
class P;
class A
{
A(P* pp) { p = pp; }
P* p;
};
//B.h
#include "P.h"
class B : public A
{
B(A* aa);
};
//B.cpp
B::B(P* pp) : A(pp)
{}
问题是当例如
pp = 0x00000000024af3f0
但是在分配之后
p = 0x024af3f0cdcdcdcd
这只发生在 64 位中。如果我不使用 P 的前向声明也没有问题。还有如果我做 p = pp;在 B 的构造函数中没有问题。
最佳答案
如果您在将数据添加到 A 类
后忘记重新编译其中一个源文件,就会发生这种情况。 p
的偏移量发生变化(在您的例子中,偏移量为四个字节),但只有一个源文件知道它。重新编译所有内容并重试。
关于64位的c++指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560851/