加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何从上面定义的类中访问类?

发布时间:2020-12-16 09:38:14 所属栏目:百科 来源:网络整理
导读:如果我有A和B类,我如何在A中创建对B的引用?我读到你需要使用指针或引用,但我找不到更多.这是我正在谈论的一个例子: class B;class A { public: B * b_pointer; void setSelf(B * given_b_pointer) { b_pointer = given_b_pointer; }; void printBName() {
如果我有A和B类,我如何在A中创建对B的引用?我读到你需要使用指针或引用,但我找不到更多.这是我正在谈论的一个例子:

class B;

class A {
    public: 

    B * b_pointer;

    void setSelf(B * given_b_pointer) {
        b_pointer = given_b_pointer;
    };

    void printBName() {
        print (b_pointer.my_name);
    };
};

class B {
    public:

    string my_name;

    void setSelf(string my_given_name) {
        my_name = my_given_name;
    };
}

这给了我几个错误.我做错了什么,我该如何解决?

编辑:相关的错误消息:

error: request for member ‘my_name’ in ‘((B*)this)->A::b_pointer’,which
is of non-class type ‘B*’.

稍微编辑的错误消息,用psuedo-class名称替换实际的类名.

解决方法

[更新]您需要转发声明类B,并且在声明类之前不能使用类中的任何B成员,因此将printBName的声明移动到代码文件中.

class B; //Forward declaration

class A {
    public: 
    B * b_ref;

    ...

    void printBName(); //Need to forward declare this as well
};

class B {
    ...
};

//Now define printBName
void A::printBName(){
    print (b_ref->my_name);// use -> to dereference b_ref
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读