能力值:
( LV2,RANK:10 )
|
-
-
2 楼
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( elemType value ) const;
protected:
static const int DefaultArraySize = 12;
int _size;
elemType *ia;
};
array.cpp
#include "stdafx.h"
#include "Array.h"
#include <iostream>
using namespace std;
Array::Array( int sz)
{
_size = sz;
ia = new elemType[ _size ];
for ( int ix=0; ix < _size; ++ix )
ia[ ix ] = 0;
}
Array::Array( elemType *array, int sz )
{
_size = sz;
ia = new elemType[ _size ];
for ( int ix=0; ix < _size; ++ix )
ia[ix ] = array[ ix ];
}
Array::Array( const Array &rhs )
{
_size = rhs._size;
ia = new elemType[ _size ];
for (int ix = 0; ix < _size; ix++ )
ia[ ix ] = rhs.ia[ ix ];
}
int _tmain(int argc, _TCHAR* argv[])
{
const int array_size = 4;
Array<int> ia(array_size);
Array<double> da(array_size);
Array<char> ca(array_size);
int ix;
for ( ix = 0; ix < array_size; ++ix ) {
ia[ix] = ix;
da[ix] = ix * 1.75;
ca[ix] = ix + 'a';
}
for ( ix = 0; ix < array_size; ++ix )
cout << "[ " << ix << " ] ia: " << ia[ix]
<< "\tca: " << ca[ix]
<< "\tda: " << da[ix] << endl;
return 0;
}
|
能力值:
( LV7,RANK:100 )
|
-
-
3 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
刚才看了参考文档,似乎这些还不是我现在最关心的
我现在不知道自己写一段code,哪些代码应该放头文件,哪些代码应该放代码文件。
还是就是我用了模板,发现我的程序根本通不过编译,也不知道错误在哪里。我现在只是希望能解决这些最基本问题,可以一边看书上的代码效果一边学习!
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
花了4个小时比较人家的源码才发现原来
template<class TYPE> Array<TYPE>::Array( int sz)
这个格式才是正确的
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
了解一下什么是函数声明和定义就知道哪里该放什么了。
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
对于一个功能模块(包含一个或者多个.C/.CPP),应该有一个对应的接口头文件,导出的此接口相关的函数声明/类型定义
如果功能模块包含有多个源码文件(.C/.CPP),那么可以把模块内部的公共库函数或者公共的类型定义放在一个头文件中(模块内部的头文件)
VS的模板类不支持声明和实现的分离,所以模板类的实现代码必须放在头文件中
|
|
|