64位c++指针赋值
c++ pointer assignment in 64bit
我正在尝试这样做
//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的构造函数中没有问题
如果在向class A
添加数据后忘记重新编译某个源文件,就会发生这种情况。p
的偏移量改变了(在您的例子中,改变了四个字节),但是只有一个源文件知道它。
相关文章:
- 全局作用域中函数指针的赋值
- 错误:在为指针赋值时,void值没有被忽略
- 关于 c++ 函数中指针赋值的简单问题
- VkSurfaceKHR 指针的值在函数调用后更改,无需任何显式赋值
- 在 Arduino 中为 2D 指针数组赋值
- 链表指针赋值为什么我们不能直接将尾巴分配给 temp 而不是尾巴>尾巴下一个
- 为什么通过指针赋值常量没有效果?
- 通过 lambda 在空指针处赋值
- 指针到指针算术:赋值
- 复制构造函数中的指针赋值
- 如何将值从指针永久赋值到变量
- 通过智能指针向类成员进行赋值
- 为什么在取消引用的指向接口的指针上使用赋值运算符不是编译器错误
- 将函数赋值给函数指针,常量参数正确性
- 为指针指向的地址赋值?C++
- C++ 包含唯一指针成员变量的类的赋值运算符
- 在类数据成员中赋值指针
- 有没有一种方法可以自动地赋值指针并增加计数器,而不需要锁?
- 赋值指针数组
- 如何在c++中赋值指针给this