首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++对象指针

C++对象指针
EN

Stack Overflow用户
提问于 2017-04-24 16:21:47
回答 2查看 102关注 0票数 0

我需要一些帮助,你能告诉我如何获得p2变量内容吗?我可以通过t1和p1获得变量,但是我想使用p2来获得健康值和魔法值。

代码语言:javascript
复制
#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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-24 16:35:34

使用

代码语言:javascript
复制
cout << (*p2)->health << endl;

*有两个含义:声明指针和取消引用指针。但是,由于->的优先级高于*,所以您需要将*p2放入杆菌中。

票数 2
EN

Stack Overflow用户

发布于 2017-04-24 16:36:09

您的例子表明,您正在寻找一个单独的操作符,该操作符一次取消两次。在C++里没有。

实现你想要的东西的两种方法。第一个问题已经提过了,然后又说了。

代码语言:javascript
复制
std::cout << (*p2)->health << std::endl;

第二种方法可以通过注意p1->health(*p1).health的等价性来找到。因此,(*p2)->health等同于(**p2).health。连续:

代码语言:javascript
复制
std::cout << t1.health << std::endl;
std::cout << (*p1).health << std::endl;
std::cout << (**p2).health << std::endl;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43593218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档