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 >我不知道为什么我原来的做法行不通了

...全文
11 点赞 收藏 8
写回复
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;
};
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告