请教:c函数如何使用C++类的成员变量?有的行,有的不行

[复制链接]
2824|4
 楼主| 汽车电子 发表于 2008-10-10 11:16 | 显示全部楼层 |阅读模式
  Keil  RV 编译环境。

  任务函数和中断函数都为c语法,其它函数都用C++。为什么有的任务可以引用C++类中成员变量,而有的就不行呢??

  原则上别的类是不允许直接的访问别的类的成员变量的,这样就违反了类的数据封装本性了 要访问的话就通过成员函数来访问,或者通过友元函数来访问。

  但这是在单片机系统,直接引用别的类中少量的成员变量,确实很方便。
 楼主| 汽车电子 发表于 2008-10-10 11:17 | 显示全部楼层

所有文件均为cpp文件

sodwell 发表于 2008-10-10 11:25 | 显示全部楼层

re

能看见源代码吗?
有源代码的话  不行 就把代码改成C的吧
单片机的话 估计也不会调太多的类  稍微动下代码
 楼主| 汽车电子 发表于 2008-10-10 12:01 | 显示全部楼层

如:

/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    UART类
*/
class            UartCls
{
public:
    UartCls(void);
    void        Init(uint32);
    uchar        puts(char *p);
    uchar        putb(uchar,uint16,uchar *p);
    void        ClearReceiveFlag(uint16);
    void        ClearTransmitFlag(void);    
    __inline    void    Interrupt(void);    
    void        TaskReceiveOK(void);
public:
    REC        Rec;
    TXD        Txd;    
    SET_CMD    SetCmd;            
private:
    uchar        *pTxd;
    uchar        GYCnt,GYFlag[3];
};

UartCls       Uart;






//      任务函数
void            TaskA(void)   __task
{
     ......
     // 这里可引用UartCls的成员变量
     if(Uart.变量)       // 
     {
         // 处理
     }
     
     // 这里不可以使用,类定义方法、变量类型是一样的
     if(其它类成员变量)
     {
     }
}
 楼主| 汽车电子 发表于 2008-10-10 12:22 | 显示全部楼层

在TaskA中申明类对象也无用

您需要登录后才可以回帖 登录 | 注册

本版积分规则

366

主题

2058

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部