如何初始化这样的静态类成员?

sosolife 2005-03-18 12:30:53
#include <vector>

//有这样一个类
template <typename T>
class C
{
public:
void putP( T t )
{
CS cs;
cs.idx = m_vctCS.size();
cs.p = t;
m_vctCS.push_back(cs);
}

typedef struct _CS
{
size_t idx;
T p;
}CS;

private:
//里面有这样一个静态类成员
static std::vector<CS> m_vctCS;
};

//问题在这里:
template <typename T> std::vector< C<T>::CS > C<T>::m_vctCS;
//上面的初始化是错误的 VC.NET2k3编译器说“error C2923: “std::vector” : “C<T>::CS”作为模板参数“#1”是无效的,应输入类型”

int main()
{
//这样使用上面那个类
C<int> c;
int n = 0;
c.putP(n);

return 0;
}

我应该怎么初始化那个静态类成员?
...全文
171 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sosolife 2005-03-18
  • 打赏
  • 举报
回复
to: yliang(风之悄语)
谢谢 没想到VC.NET2k3的编译器还要让我绕这样一道弯

关门 给分!
goodluckyxl 2005-03-18
  • 打赏
  • 举报
回复
typedef struct _CS
{
size_t idx;
T p;
}CS; //嵌套使用不影响后面使用其类型作为参数列表

// 静态成员可以这样定义,我觉得没有问题
// vc6支持嵌套应该可以
大羽飞鹤 2005-03-18
  • 打赏
  • 举报
回复
学习中
dongpy 2005-03-18
  • 打赏
  • 举报
回复
楼主,你的代码在VC6可以通过的。
yliang 2005-03-18
  • 打赏
  • 举报
回复
加个typename :
template <typename T> std::vector< typename C< T>::CS > C< T>::m_vctCS;

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧