有没有办法实现不同类中变量的关联?谢谢

leosheng 2009-12-08 02:59:08
有个问题想请教下大家,有没有办法实现不同类中变量的关联?
就是说假如有2个类A和B,A中有个变量a,B中有个变量b,现在我的想法是如何让a和b关联起来,就是a的值和b的值总是相等的。当b的值改动时,a随着改动。
我把b初始化为a的引用或者在类b中一个a类型的指针指向a,在使用过程中都有问题,问下大家该怎么实现呢??谢谢··
...全文
83 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
leosheng 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 w_anthony 的回复:]
B对象构造的时刻pMyClassA指针可能还没有分配空间。
另外,一般也不要直接写死引用哪个变量,这么做是比较常用的:
class B
{
public:
    B(CString& str);
    ...
};

B::B(CString& str)
b(str)
{
}

最后定义B对象的时刻,把pMyClassA->a做参数传进去。


[/Quote]
是哦!!!!
构造函数的时候,this指针还没初始化····这都没想到,晕~~
shdwpirvate 2009-12-08
  • 打赏
  • 举报
回复
终于看到 ,偶懂一点的问题了。楼上正解~ 但是!楼主忘了最重要的main函数了~
如果楼主这样写main函数就没问题了~还是那句,写c的多注意内存~
void main()
{
pMyClassA = new A;
B obB;
obB.FuncB;
}
不过没有楼上的方法好~
楼上的main 大体应该是这样
void main()
{
pMyClassA = new A;
B obB(pMyClassA->a);
obB.FuncB;
}
打完收工
w_anthony 2009-12-08
  • 打赏
  • 举报
回复
B对象构造的时刻pMyClassA指针可能还没有分配空间。
另外,一般也不要直接写死引用哪个变量,这么做是比较常用的:
class B
{
public:
B(CString& str);
...
};

B::B(CString& str)
b(str)
{
}

最后定义B对象的时刻,把pMyClassA->a做参数传进去。

leosheng 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 akirya 的回复:]
B 的b变量引用A a变量即可
[/Quote]
他们之间该怎么初始化呢?

class A
{
A();
CString a;
}

A *pMyClassA; //这个会被初始化为指向类A的this指针;这里省略。。。。

class B
{
B();
CString &b;
void FucnB();
}

引用初始化
B::B()
b(pMyClassA->a)
{
}
编译没问题,但是使用时出问题
void B::FuncB()
{
AfxMessageBox(b); //这里抛出异常,访问非法
}
  • 打赏
  • 举报
回复
B 的b变量引用A a变量即可
healer_kx 2009-12-08
  • 打赏
  • 举报
回复
创建引用变量,再复杂就observer模式。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧