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

[复制链接]
5807|3
 楼主| ATmega32L 发表于 2008-1-29 11:53 | 显示全部楼层 |阅读模式
IAR&nbsp;C++定义一个类static&nbsp;const成员变量,怎么初始化?&nbsp;<br /><br />class&nbsp;TTest&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;static&nbsp;&nbsp;const&nbsp;&nbsp;uint16&nbsp;A=10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;static&nbsp;&nbsp;const&nbsp;&nbsp;uint16&nbsp;B[6]={0,1,2,3,4,5};&nbsp;&nbsp;//提示错误&nbsp;<br />}&nbsp;<br /><br />普通变量可以初始化,数组怎么不行?
zlgmcu 发表于 2008-1-29 13:37 | 显示全部楼层

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

对象才是实实在在的。<br />因此要初始化{0,1,2,3,4,5}这些数据只能放在初始化的构造函数里进行。
hotpower 发表于 2008-2-8 01:33 | 显示全部楼层

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

  <br /> 相关链接:<a href='https://bbs.21ic.com/club/bbs/showEssence.asp?id=6568&page=3'>https://bbs.21ic.com/club/bbs/showEssence.asp?id=6568&page=3</a>
hotpower 发表于 2008-2-8 04:43 | 显示全部楼层

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

//class.h<br />class&nbsp;SystemObj;<br /><br />class&nbsp;SystemObj<br />{<br />public:<br />&nbsp;&nbsp;&nbsp;&nbsp;SystemObj(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led1On(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led1Off(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led2On(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led2Off(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led3On(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led3Off(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led4On(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led4Off(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led5On(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led5Off(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led6On(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Led6Off(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;BeepOn(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;BeepOff(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;HibernateInit(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;WatchdogInit(void);<br />private:<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;Init(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;SysTickInit(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;LedInit(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;BeepInit(void);<br />private:<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;Count;<br />//注意简单的静态变量可以直接定义<br />//&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;const&nbsp;unsigned&nbsp;int&nbsp;abc&nbsp;=123;<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;const&nbsp;unsigned&nbsp;int&nbsp;abc;//&nbsp;=123;<br />//注意复杂的静态变量不可以直接定义,例如数组<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;const&nbsp;unsigned&nbsp;int&nbsp;xyz[5];//&nbsp;=&nbsp;{1,2,3,4,5};<br />public:<br />&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;RamTest;<br />&nbsp;&nbsp;&nbsp;&nbsp;union<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;unsigned&nbsp;char&nbsp;WorkFlag;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;Watchdog:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1;//允许喂狗<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;SysTickFlag:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1;//节拍中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;MainLoopFlag:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1;//主循环运行<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;MainWatchdog:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1;//主循环喂狗<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;};<br />};<br /><br />//注意不能在class.h里定义这2个静态变量<br />//const&nbsp;unsigned&nbsp;int&nbsp;SystemObj::abc&nbsp;=&nbsp;123;<br />//const&nbsp;unsigned&nbsp;int&nbsp;SystemObj::xyz[5]&nbsp;=&nbsp;{1,2,3,4,5};<br /><br /><br />//class.cpp<br />#include&nbsp;&quot;class.h&quot;<br /><br />const&nbsp;unsigned&nbsp;int&nbsp;SystemObj::abc&nbsp;=&nbsp;123;//可以在类中直接定义<br />const&nbsp;unsigned&nbsp;int&nbsp;SystemObj::xyz[5]&nbsp;=&nbsp;{1,2,3,4,5};;//不可以在类中直接定义<br /><br /><br /> 相关链接:<a href='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'>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</a>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

376

帖子

0

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