vc6 如何实现静态成员初始化,

elevenj 2002-11-11 01:21:10
#ifndef Array_H
#define Array_H

template < class elemType >

class Array
{
public:
explicit Array(int size=DefaultArraySize);

Array( elemType *array,int array_size );
Array( const Array &rhs );

virtual ~Array()
{
delete[] ia;
}

bool operator==( const Array& ) const;
bool operator!=( const Array& ) const;

Array& operator=( const Array& );
int size() const { return _size; }

virtual elemType& operator[] (int index) {return ia[index];}
virtual void sort();

virtual elemType min() const;
virtual elemType max() const;
virtual int find( const elemType &value )const;

protected:
elemType *ia;
static const int DefaultArraySize ;

int _size;
};

#endif
我曾经
const int Array::DefaultArraySize = 12 ;
实现过初始化。
可是有template < class elemType >我不知道为什么我原来的做法行不通了

...全文
72 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xkak2 2002-11-29
  • 打赏
  • 举报
回复
VC6对c++标准的支持不太好,不能直接初始化静态变量。
VC7可以。

所以你最好用enum来实现。
Think in c++里有介绍
haoK 2002-11-23
  • 打赏
  • 举报
回复
VC6好象不支持在类里直接初始化
按wwayya兄所言应该可以了
elevenj 2002-11-20
  • 打赏
  • 举报
回复
vc6.0 里提示必须为0,难道我不可付值为12。
elevenj 2002-11-19
  • 打赏
  • 举报
回复
未解决
alienmaster 2002-11-19
  • 打赏
  • 举报
回复
标准c++要求直接在类定义中初始化,
所以直接static const int DefaultArraySize = 12
就可以了
superzjx2000 2002-11-14
  • 打赏
  • 举报
回复
use initionalist
explicit Array(int size=DSize)
:DefaultArraySize(DSize);
wwayya 2002-11-13
  • 打赏
  • 举报
回复
你可以这模做:
template<class elemType>
const int Array<elemType>::DefaultArraySize = 12;
就ok了:)
sans 2002-11-11
  • 打赏
  • 举报
回复
换种方式:
...
protected:
elemType *ia;
enum { DefaultArraySize = 12 };

int _size;
};

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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