Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用对象指针时如何访问成员函数_C++_Pointers - Fatal编程技术网

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是指针,因此不能在其上使用“.”


您可以在这里阅读更多关于运算符优先级的内容()

如果我错过了,我想我已经盯着代码看太久了。不管怎样,谢谢你指出:)我想我已经盯着代码看太久了,如果我没注意到的话。谢谢你指出这一点:)