【发布时间】:2020-01-02 13:19:01
【问题描述】:
我尝试创建一个最小的问题示例。我正在尝试检查 void 指针的地址是否为NULL。该地址应该通过构造类来提供,并且应该是const。我写了下面的类。
MyPointer.h:
public:
MyPointer(const void* activeApp) : m_activeApp(activeApp){
std::cout <<"adresse on construction: " << m_activeApp << std::endl;
};
MyPointer.cpp:
void printAdress();
private:
const void* m_activeApp;
};
方法“printAdress”应该能够打印给定指针的正确地址。
int main(void){
void* p_activeApp = nullptr;
std::cout << p_activeApp << std::endl;
MyPointer myPointer(p_activeApp);
std::cout << "Should be 0: " ;
myPointer.printAddress();
p_activeApp = new(bool);
std::cout << "Should be anything: ";
myPointer.printAddress();
}
void MyPointer::printAddress() {
std::cout << this->m_activeApp << std::endl;
};
当然不行,因为m_activeApp仍然指向NULL,但是我该如何改变呢?
【问题讨论】:
-
一方面,你的问题的措辞不清楚:你的意思是指针的地址(指针对象在内存中的位置)还是指针持有的地址(位置指针指向)?顺便说一句:关于minimal reproducible example,您甚至还没有接近,因为代码远非可编译。作为新用户,也请带上tour阅读How to Ask。
-
为什么分配给不同的变量时成员的值会发生变化? (了解指针最重要的一点是,指针没有什么特别之处。)
-
您似乎期望
p_activeApp的更改也会对m_activeApp产生影响,但事实并非如此。它们是两个不同的值。