hur.cn - 华软网

 热门搜索

一个类访问另一个类中成员的问题

  作者:未知    来源:网络    更新时间:2010/12/9
我自己创建的  A类 B类 B类想访问A类的CListctrl控件的成员变量m_list  我是这么做的 在A类的头资料中 CA * p;
在B类cpp中 定义A类对象  CA m_a;然后 m_a.p=&m_a;
m_a.p->m_list.insertitem(...);  运行的时候  毛病  Debug Assertion Failed ! 重试 终止 忽略

A是formview   B是dialog的  

这是我自己写的  我是小菜鸟  这类思绪不行的话  给出另外方法吧  详细点。多谢了
---华软 网友回答---
你的A和B有什么关系?比如是在A中生成B的?父子关系。。。
---华软网友回复---
把那控件变量 搞成全局的  直接EXTERN 就行 
---华软网友回复---
在B类的.h资料中:
class CA;
class CB()
{
 private:  //public也行
 CA *p;
}
在B类的初始化中给*p举行初始化操作:p = new CA(m_hWnd);
然后再B类.cpp资料用到的地方就能够直接运用了
---华软网友回复---
A类在创建时,把自己的指针交给B
---华软网友回复---
先定义一个全局的指针变量,类型为B类,这样:B *MEdialog;记住是要全局的。否则无效。
然后在B类的OnInitDialog中这样写:MEdialog=this;
然后在需要运用的源资料内先添上extern B *MEdialog;再包括B类的头资料,然后你就能够运用MEdialog->m_list来访问啦。。
---华软网友回复---
帮顶,楼主还需多努力学习
---华软网友回复---
Class CA
{
public:
CListctrl m_list;
}
Class CB
{
public:
CListctrl *m_pAList;
}
CA myCA;
CB myCB;
myCB.m_pAList = &(myCA.m_list);
myCB.m_pAlist->InsertItem(...);
---华软网友回复---
引用 5 楼 yuenter 的回复:
先定义一个全局的指针变量,类型为B类,这样:B *MEdialog;记住是要全局的。否则无效。
然后在B类的OnInitDialog中这样写:MEdialog=this;
然后在需要运用的源资料内先添上extern B *MEdialog;再包括B类的头资料,然后你就能够运用MEdialog->m_list来访问啦。。


不要轻易教人用全局数据!教坏人!
---华软网友回复---
呵呵最好少运用全局变量或全局函数,很容易引发数据杂乱的
---华软网友回复---
谢谢大家了 我用yuenter说的 全局指针 解决了  
LongLongAgoImBoy和sxqinge说的  我觉得也对  然则我没有弄成功  呵呵  分数有限   就分开给了 呵呵      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。