C++ 使用对象指针时如何访问成员函数
我试图通过C++ 使用对象指针时如何访问成员函数,c++,pointers,C++,Pointers,我试图通过nodePtr访问值节点,但遇到问题 //main// 节点n1(真); 节点n2(假); 节点*nPtr1=&n1; 节点*nPtr2=nPtr1; 库特 当然,在记录m_值时,您会得到相同的结果。:)您甚至可以在日志中看到它们都指向同一个实例 nPtr2 = nPtr1; 当然,在记录m_值时,您会得到相同的结果。:)您甚至可以在日志中看到它们都指向同一实例。nPtr1和nPtr2都指向同一实例 nPtr2 = nPtr1; nPtr1指向n1,所以nPtr2现在也
nodePtr
访问值节点
,但遇到问题
//main//
节点n1(真);
节点n2(假);
节点*nPtr1=&n1;
节点*nPtr2=nPtr1;
库特
当然,在记录m_值时,您会得到相同的结果。:)您甚至可以在日志中看到它们都指向同一个实例
nPtr2 = nPtr1;
当然,在记录m_值时,您会得到相同的结果。:)您甚至可以在日志中看到它们都指向同一实例。nPtr1和nPtr2都指向同一实例
nPtr2 = nPtr1;
nPtr1指向n1,所以nPtr2现在也指向n1。这就是为什么您会得到相同的值
以正确的方式访问成员函数
nPtr2->GetValue();
以上是访问成员函数的正确方法
*nPtr2->GetValue()
*nPtr2.GetValue()
两者都错了。要了解原因,您需要查看运算符优先级
在第一种方式中,即*nPtr2->GetValue(),“->”运算符具有更高的优先级,因此与此类似
*(nPtr2->GetValue())
这意味着您正在尝试取消引用(*)GetValue()的返回值,该值是bool
在第二种方式中,即*nPtr2.GetValue(),“.”运算符具有更高的优先级,因此它类似于写入
*(nPtr2.GetValue())
由于nPtr2是指针,因此不能在其上使用“.”
您可以在此处阅读有关运算符优先级的更多信息()nPtr1和nPtr2都引用同一实例
nPtr2 = nPtr1;
nPtr1指向n1,所以nPtr2现在也指向n1。这就是为什么您会得到相同的值
以正确的方式访问成员函数
nPtr2->GetValue();
以上是访问成员函数的正确方法
*nPtr2->GetValue()
*nPtr2.GetValue()
两者都错了。要了解原因,您需要查看运算符优先级
在第一种方式中,即*nPtr2->GetValue(),“->”运算符具有更高的优先级,因此与此类似
*(nPtr2->GetValue())
这意味着您正在尝试取消引用(*)GetValue()的返回值,该值是bool
在第二种方式中,即*nPtr2.GetValue(),“.”运算符具有更高的优先级,因此它类似于写入
*(nPtr2.GetValue())
由于nPtr2是指针,因此不能在其上使用“.”
您可以在这里阅读更多关于运算符优先级的内容()如果我错过了,我想我已经盯着代码看太久了。不管怎样,谢谢你指出:)我想我已经盯着代码看太久了,如果我没注意到的话。谢谢你指出这一点:)