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

c – 如何从上面定义的类中访问类?,第1张

概述如果我有A和B类,我如何在A中创建对B的引用?我读到你需要使用指针或引用,但我找不到更多.这是我正在谈论的一个例子: class B;class A { public: B * b_pointer; void setSelf(B * given_b_pointer) { b_pointer = given_b_pointer; }; 如果我有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 declarationclass A {    public:     B * b_ref;    ...    voID printBname(); //Need to forward declare this as well};class B {    ...};//Now define printBnamevoID A::printBname(){    print (b_ref->my_name);// use -> to dereference b_ref}
总结

以上是内存溢出为你收集整理的c – 如何从上面定义的类中访问类?全部内容,希望文章能够帮你解决c – 如何从上面定义的类中访问类?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1214280.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存