PersonalCorpus 版 (精华区)
发信人: Aarchbishop (菩提·路在脚下!你呢), 信区: C_and_CPP
标 题: Re: 问题:模板类的静态数据成员如何初始化?各位大...
发信站: 哈工大紫丁香 (2003年11月03日11:44:11 星期一), 站内信件
这样写就应该没问题了...:)
参见c++ primer 关于类模板的静态成员函数 :)))
//初始化静态成员m_count
template<class T>
int Counter<T>::m_count = 0;
【 在 zhjsh (阿郑) 的大作中提到: 】
: 标 题: 问题:模板类的静态数据成员如何初始化?各位大虾!
: 发信站: 哈工大紫丁香 (Mon Nov 3 11:00:25 2003), 站内信件
:
: 问题:模板类的静态数据成员如何初始化?各位大虾!
: #include <iostream>
: using namespace std;
: //建立对象计数器模板类,如果建立一个<class T>对象,计数器加一,
: //如果析构一个对象,计数器减一
: template<class T>
: class Counter
: {
: public:
: Counter(int step = 1) //构造函数,相当于构造了step个 <class T>对象
: {
: m_step = step;
: m_count += m_step;
: }
: ~Counter(){ m_count -= m_step; };
: int GetCout(){ return m_count; };
:
: public:
: static int m_count;
: int m_step;
: };
:
: //初始化静态成员m_count
: int Counter<class T>::m_count = 0;
:
: void main(void)
: {
: Counter<int> myCounter;
: cout << myCounter.GetCout();
: }
: //以下是编译错误
: /*
: Compiling...
: countobject.cpp
: Linking...
: countobject.obj : error LNK2001: unresolved external symbol "public: static in
: t Counter1<int>::m_count" (?m_count@?$Counter1@H@@2HA)
: Debug/countobject.exe : fatal error LNK1120: 1 unresolved externals
: Error executing link.exe.
:
: countobject.exe - 2 error(s), 0 warning(s)
: */
: 但是,如果去掉模板声明<class T>,编译能够通过;
: 在初始化静态成员m_count 时,将class T改为int,也能通过,但是这去失去了模板类的优
: 越性。
:
: 问题:
: 模板类的静态数据成员如何初始化?
:
: --
: ∴°★.☆° .★·°∴°★.° .·。∴°
: °∴ 那怕星际无垠 ☆° .·★°∴°.°°
: ∴°.°★ .·°∴°.°∴°.★☆° .·
: °.☆° .★·我也要追到你 °.°°.★
: .·°∴★°.°∴°.☆° .·°∴°.°
: .·°∴°★.°.∴·°°并永远爱你∴☆°
:
: ※ 来源:.哈工大紫丁香 bbs.hit.edu.cn [FROM: 202.118.250.6]
--
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃· 我们奔奔波波,悲悲乐乐,自己追逐生命,嬉戏人生 ·┃
┃ 我们把童年抛了,把青春抛了,去追求一个叫成功的东西 ┃
┃ 我们把自己抛了,把父母抛了,去追求一个叫爱情的东西 ┃
┃· 我们淡忘了往事,但当我们哭泣时,才知道往事从未曾离开过我们 ·┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.224.14]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.828毫秒