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

2008-2-8 05:13 6291 6 6 分类: MCU/ 嵌入式



原帖: http://bbs.21ic.com/club/bbs/list.asp?boardid=42&page=1&t=2846606


ATmega32L 发表于 2008-1-29 11:53 ZLG-MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖


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


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

class TTest
{
  static  const  uint16 A="10";                  
  static  const  uint16 B[6]={0,1,2,3,4,5};  //提示错误
}

普通变量可以初始化,数组怎么不行?



hotpower 发表于 2008-2-8 01:33 ZLG-MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

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


 

求助后的总结报告



签名:


hotpower 发表于 2008-2-8 04:43 ZLG-MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖


4楼: 关于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};;//不可以在类中直接定义




* - 本贴最后修改时间:2008-2-8 5:03:43 修改者:hotpower

C++ Primer 第三版中文版

b
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条