打印
[ZLG-MCU]

IAR C++定义一个类static const成员变量,怎么初始化?

[复制链接]
4744|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ATmega32L|  楼主 | 2008-1-29 11:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zlgmcu| | 2008-1-29 13:37 | 只看该作者

类就是个模子,是不能含有真实数据的

对象才是实实在在的。
因此要初始化{0,1,2,3,4,5}这些数据只能放在初始化的构造函数里进行。

使用特权

评论回复
板凳
hotpower| | 2008-2-8 01:33 | 只看该作者

类static const成员变量必须在类外初始化~~~楼主真和C++干上了~~

使用特权

评论回复
地板
hotpower| | 2008-2-8 04:43 | 只看该作者

关于C++类的静态变量初始化问题

//class.h
class SystemObj;

class SystemObj
{
public:
    SystemObj(void);
    void Led1On(void);
    void Led1Off(void);
    void Led2On(void);
    void Led2Off(void);
    void Led3On(void);
    void Led3Off(void);
    void Led4On(void);
    void Led4Off(void);
    void Led5On(void);
    void Led5Off(void);
    void Led6On(void);
    void Led6Off(void);
    void BeepOn(void);
    void BeepOff(void);
    void HibernateInit(void);
    void WatchdogInit(void);
private:
    void Init(void);
    void SysTickInit(void);
    void LedInit(void);
    void BeepInit(void);
private:
    unsigned char Count;
//注意简单的静态变量可以直接定义
//    static const unsigned int abc =123;
    static const unsigned int abc;// =123;
//注意复杂的静态变量不可以直接定义,例如数组
    static const unsigned int xyz[5];// = {1,2,3,4,5};
public:
    volatile unsigned int RamTest;
    union
    {
        volatile unsigned char WorkFlag;
        struct
        {
            unsigned char Watchdog:         1;//允许喂狗
            unsigned char SysTickFlag:      1;//节拍中断
            unsigned char MainLoopFlag:     1;//主循环运行
            unsigned char MainWatchdog:     1;//主循环喂狗
        };
    };
};

//注意不能在class.h里定义这2个静态变量
//const unsigned int SystemObj::abc = 123;
//const unsigned int SystemObj::xyz[5] = {1,2,3,4,5};


//class.cpp
#include "class.h"

const unsigned int SystemObj::abc = 123;//可以在类中直接定义
const unsigned int SystemObj::xyz[5] = {1,2,3,4,5};;//不可以在类中直接定义


相关链接:http://www.google.cn/search?complete=1&hl=zh-CN&newwindow=1&q=C%2B%2B+Primer+%E7%AC%AC%E4%B8%89%E7%89%88%E4%B8%AD%E6%96%87%E7%89%88&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

376

帖子

0

粉丝