C 对象指针

C++ Object Pointer

本文关键字:指针 对象      更新时间:2023-10-16

我在这里需要一些帮助,您能告诉我如何获得P2变量内容吗?我可以通过T1和P1获得变量,但我想使用P2来获得健康和法力值。

#include <iostream>
using namespace std;
class Mage{
public:
    int health;
    int mana;
    Mage(int health, int mana){
        this->health = health;
        this->mana = mana;
    }
};
int main(){
    Mage t1 = Mage(1,1);
    Mage *p1 = &t1;
    Mage **p2 = &p1;
    cout << t1.health << endl;
    cout << p1->health << endl;
    cout << "how to print variable content with p2?" << endl;
    return 0;
}

使用

cout << (*p2)->health << endl;

*具有两个含义:声明指针并取消指针。但是,由于->*更高的优先级,因此您需要将*p2放入背包中。

您的示例建议您正在寻找一个单一的操作员,该操作员立即将两次退出。C 中没有。

实现自己想要的两种方法。第一个已经提到并且去了

std::cout << (*p2)->health << std::endl;

可以通过指出p1->health等效于(*p1).health来找到第二个。因此,(*p2)->health等于(**p2).health。连续:

std::cout << t1.health << std::endl;
std::cout << (*p1).health << std::endl;
std::cout << (**p2).health << std::endl;