首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • MFC中在一类如何访问另一类的变量?除了继承还有没有其它的方法?? [已结帖,结帖人:jietion]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jietion
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-18 13:56:36 楼主
    MFC中在一类如何访问另一类的变量?除了继承还有没有其它的方法??
    60  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jietion
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 13:57:501楼 得分:0
    如果有例子的话希望能给一个参考一下!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shunruo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 14:00:292楼 得分:2
    友元
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • matrixnull
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 14:02:453楼 得分:2
    把它声明为public不就行了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zzdmfk
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 14:05:544楼 得分:2
    引用 3 楼 matrixnull 的回复:
    把它声明为public不就行了
    或把类定义为它的友元类,就可以访问了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jietion
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 14:34:125楼 得分:0
    引用 3 楼 matrixnull 的回复:
    把它声明为public不就行了

    可不可以举个例子来看看?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnzdgs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 8

      2

      19

    发表于:2008-11-18 14:34:446楼 得分:5
    对象.成员
    对象指针->成员
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jietion
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 14:35:567楼 得分:0
    在一个类中的函数调用另一个类的函数的变量??????????
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lake_cx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 14:47:578楼 得分:5
    引用 6 楼 cnzdgs 的回复:
    对象.成员
    对象指针->成员

    貌似在很多情况下用一个方法GetXXX和SetXXX来进行数据交互,来替代公开的属性(C++中没属性)。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnzdgs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 8

      2

      19

    发表于:2008-11-18 14:48:049楼 得分:15
    例如:
    class a
    {
    public:
    int i;
    };
    class b
    {
    a a1;
    a* a2;
    void func(a a3, a* a4, a& a5);
    };
    b::b()
    {
    a2 = new a;
    }
    void b::func(a a3, a* a4, a& a5)
    {
    a1.i = 1;
    a2->i = 2;
    a3.i = 3;
    a4->i = 4;
    a5.i = 5;
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • vinep
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 14:57:2910楼 得分:10
    定义成public是最简单的。
    class A
    {
    public:
    int i;
    };

    class B
    {
    public:
    void fun()
    {
    A a;
    cout>>a.i>>endl;
    }
    };
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lijianli9
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 15:14:5311楼 得分:2
    可以设置getVar或者setVar来实现
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • carlolin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 15:20:5712楼 得分:5
    可以在一个类的声明下定义内联函数
    如:
    class A
    {
    int b;
    }
    extern A *a;
    inline A *getdlgapp(){return a;}
    在另一个类声明里包含类定义头文件
    然后在另一个类CPP中
    getdlgapp()->b;
    就OK了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jietion
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 17:04:5413楼 得分:0
    cannot instantiate abstract class due to following members:
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jietion
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 17:14:1114楼 得分:0

    int CPlayingCards::DirectChoose()
    {
    int i;
    int counter_0 = 0;
    int counter_1 = 0;
    int value_1 = 17;
    int counter_2 = 0;
    int value_2 = 17;
    int counter_3 = 0;
    int value_3 = 17;
    int counter_4 = 0;
    int value_4 = 17;
    CCardsType temp;
    temp.m_nTypeValue = 2;
        CGame a;
    F:\斗地主2\斗地主\斗地主\Playing_Cards.cpp(1016) : error C2259: 'CGame' : cannot instantiate abstract class due to following members:
    请问这个错在那里???
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ILoveCLanguage
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 17:23:4815楼 得分:2
    1.像6楼说的
    对象.成员
    对象指针->成员
    2.
    把变量当作参数传进来,这个还是比较好用,如果你用的多,就按照6楼说的呗
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnzdgs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 8

      2

      19

    发表于:2008-11-18 18:14:4416楼 得分:1
    哪行代码有错?相关定义怎么写的?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnzdgs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 8

      2

      19

    发表于:2008-11-19 10:29:5217楼 得分:4
    CGame定义的是一个抽象类,不能实例化,需要从CGame派生子类,实现其纯虚函数,用子类构造对象。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnzdgs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 8

      2

      19

    发表于:2008-11-19 14:00:0918楼 得分:5
    例如类中有这样定义:
    virtual void func() = 0;
    这就是一个纯虚函数,具有纯虚函数的类不能直接实例化,也就是不能直接构造对象,包括定义变量和用new构造。必须从该类派生一个新类,在新类中重载实现func函数,用这个新类才可以构造对象。

    有问题请继续跟贴,不要用私聊的方式,因为帖子中回复的内容是大家都可以看到的,可以供其他人学习参考,如果回复有错,其他人也可以指正。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved