| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 638 人关注过本帖
标题:麻烦大家了,谢谢
只看楼主 加入收藏
guodong661
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-2-15
收藏
 问题点数:0 回复次数:6 
麻烦大家了,谢谢

麻烦指导,谢谢

#include<iostream>
template<class elemType>
class Array{
public:
explicit Array(int size = DefaultArraySize);//这里有2处错误
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:
static const int DefaultArraySize = 0;
int _size;
elemType *ia;
};

int main(){
const int array_size=4;
Array<int> ia(array_size);
Array<double> da(array_size);
Array<char> ca(array_size);

for(int 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)
{std::cout<<"["<<ix<<"] ia:"<<ia[ix]
<<"\tca:"<<ca[ix]<<"\tda:"<<da[ix]<<std::endl;
}
return 0;
}



这是编辑出的错误,共4处,麻烦大侠看看
1.'DefaultArraySize' : pure specifier can only be specified for functions
2.see reference to class template instantiation 'Array<double>' being compiled
3.'DefaultArraySize' : pure specifier can only be specified for functions
4.see reference to class template instantiation 'Array<char>' being compiled

搜索更多相关主题的帖子: 麻烦 
2006-02-15 12:02
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
explicit Array(int size = DefaultArraySize);//这里有2处错误

楼主为什么要这样定义呢?直接写Array(int size = DefaultArraySize);不可以么?

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-15 13:57
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

不好意思,收回.

[此贴子已经被作者于2006-2-15 15:02:40编辑过]


2006-02-15 15:00
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 

我写的程序,通过编译了阿,而且运行正确。 楼上反应好快阿,不该叫woodhead
#include<iostream>
using namespace std;

class DD
{
public:
void print(int size = m_size);
private:
static const int m_size = 10;
};

void DD::print(int size)
{
cout << size << endl;
}

int main()
{
DD a;
a.print();
return 0;
}

[此贴子已经被作者于2006-2-15 15:07:01编辑过]


成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-15 15:05
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

楼主的程序在DEV上可以通过,不过
for(ix=0;ix<array_size;++ix)
应改为
for(int ix=0;ix<array_size;++ix)


2006-02-15 15:11
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
这个涉及到作用域问题,不同的编译器支持的标准不一样,最讨厌不按照新C++语法写的程序了。

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-15 15:24
smallcat
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-2-20
收藏
得分:0 

类声明只是声明一个类的“尺寸和规格”,并不进行实际的内存分配。所以在类声明中写成定义 static const int DefaultArraySize = 0;是不正确的。应该在类声明外分配空间和初始化!


逃避不一定躲的过,面对不一定最难过。孤单不一定不快乐,正如得到不一定能长久~~!◎#¥%
2006-02-21 19:35
快速回复:麻烦大家了,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013201 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved