标题:我不过是声名一个数组,有什么错
只看楼主
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
 问题点数:0 回复次数:9 
我不过是声名一个数组,有什么错

#include<iostream>
class mammal
{public:
mammal():itsage(1){cout<<"mammal constructor....."<<endl;}
virtual ~mammal(){cout<<"mammal destructor...."<<endl;}
mammal(const mammal & rhs);
virtual void speak()const{cout<<"mammal speak!";}
virtual mammal * clone(){return new mammal(*this);}
int getage()const{return itsage;}
protected:
int itsage;
};
mammal::mammal(const mammal & rhs):itsage(rhs.getage()){cout<<"mammal copy constructor..."<<endl;}

int main()
{mammal * thearray[numanimaltype];//这一行老是报错,,我实在不知为何.

return 0;
}
在线等,谢谢!!!

搜索更多相关主题的帖子: 声名 
2007-08-29 21:50
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 
以下是引用honestgrubby在2007-8-29 21:50:49的发言:

#include<iostream>
class mammal
{public:
mammal():itsage(1){cout<<"mammal constructor....."<<endl;}
virtual ~mammal(){cout<<"mammal destructor...."<<endl;}
mammal(const mammal & rhs);
virtual void speak()const{cout<<"mammal speak!";}
virtual mammal * clone(){return new mammal(*this);}
int getage()const{return itsage;}
protected:
int itsage;
};
mammal::mammal(const mammal & rhs):itsage(rhs.getage()){cout<<"mammal copy constructor..."<<endl;}

int main()
{mammal * thearray[numanimaltype];//这一行老是报错,,我实在不知为何.

return 0;
}
在线等,谢谢!!!


羊肉串 葡萄干 哈密瓜!!
2007-08-29 22:03
valentineyzq
Rank: 1
等 级:新手上路
威 望:1
帖 子:69
专家分:0
注 册:2007-8-21
得分:0 
numanimaltype是什么?好像你没声明过。就算声明过了也不能这么用,应该动态分配。

我的世界曾经下过一场倾盆大雨。
2007-08-29 22:04
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
得分:0 
#include<iostream>
class mammal
{public:
mammal():itsage(1){cout<<"mammal constructor....."<<endl;}
virtual ~mammal(){cout<<"mammal destructor...."<<endl;}
mammal(const mammal & rhs);
virtual void speak()const{cout<<"mammal speak!";}
virtual mammal * clone(){return new mammal(*this);}
int getage()const{return itsage;}
protected:
int itsage;
};
mammal::mammal(const mammal & rhs):itsage(rhs.getage()){cout<<"mammal copy constructor..."<<endl;}
const int numanimaltype=3;
int main()
{mammal * thearray[numanimaltype];
return 0;
}
我声名了,忘粘上去了,这样也不行?

向各位大侠学习!
2007-08-29 22:06
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 

可以了


Fight  to win  or  die...
2007-08-29 22:08
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
得分:0 
我就是把const int numanimaltype=3;这行去掉,真接声名 mammal * thearray[3];也不行,说是[Error] C:\PROGRA~1\C-FREE~1\temp\Untitled1.cpp:36: `thearray' undeclared (first use this function)

向各位大侠学习!
2007-08-29 22:09
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
得分:0 

完整的程序是这样的:
#include<iostream>
class mammal
{public:
mammal():itsage(1){cout<<"mammal constructor....."<<endl;}
virtual ~mammal(){cout<<"mammal destructor...."<<endl;}
mammal(const mammal & rhs);
virtual void speak()const{cout<<"mammal speak!";}
virtual mammal * clone(){return new mammal(*this);}
int getage()const{return itsage;}
protected:
int itsage;
};
mammal::mammal(const mammal & rhs):itsage(rhs.getage()){cout<<"mammal copy constructor..."<<endl;}
class dog:public mammal
{public:
dog(){cout<<"dog constructor.....";}
virtual ~dog(){cout<<"dog destructor...";}
dog (const dog & rhs);
void speak()const{cout<<"woof!";}
virtual mammal * clone(){return new dog(*this);}
};
dog::dog(const dog & rhs):mammal(rhs){cout<<"dog copy constructor....";}
class cat:public mammal
{public:
cat(){cout<<"cat constructor....";}
~cat(){cout<<"cat destructor....";}
cat(const cat &);
void speak()const{cout<<"meow!";}
virtual mammal * clone(){return new cat(*this);}

};
cat::cat(const cat & rhs):mammal(rhs){cout<<"cat copy constructor....";}
enum ANIMALS{mammal,dog,cat};
const int numanimaltype=3;
int main()
{mammal * thearray[numanimaltype];
mammal * ptr;
int choice,i;
for(i=0;i<numanimaltype;i++)
{cout<<"(1)dog (2)cat (3)mammal :";
cin>>choice;
switch(choice)
{case dog: ptr = new dog;
break;
case cat: ptr = new cat;
break;
default: ptr=new mammal;
break;
}
thearray[i]=ptr;}
mammal * otherarray[numanimaltype];
for(i=0;i<numanimaltype;i++)
{thearray[i]->speak();
otherarray[i]=thearray[i]->clone();}
for(i=0;i<numanimaltype;i++)
otherarray[i]->speak();
return 0;
}
有不少错误.


向各位大侠学习!
2007-08-29 22:32
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
我很奇怪你用了cout,endl,确不加std声明,你的编译器不报错?

你4楼的程序除了上面这个没什么错误。
声请数组那里因为你什么都没做就结束了,所以应该会有警告,不会报错。

后面的太乱,就不看了!

Fight  to win  or  die...
2007-08-29 23:43
冰的热度
Rank: 2
等 级:禁止访问
威 望:5
帖 子:404
专家分:0
注 册:2006-12-2
得分:0 
奇怪,你四楼那个代码,我粘贴下来到C-Free3.5编译,并没有报错呀!!!

到VC++6.0中编译,就不只那一个错了,你得把using namespace std;加上.

还有一个警告错,就是那个数组在下面没有用到



科学是永恒之迷...... 我的博客http://blog..cn/u/1267727974 阅读我的blog,懂与不懂都是收获!
2007-08-30 12:08
honestgrubby
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-8-5
得分:0 

楼主,我用的是C-FREE编译器,不用std声名也没问题,到现在也没找出程序哪里错.
顺便问大哥一句,你有严蔚敏数据结构C语言版的书吗?


向各位大侠学习!
2007-09-01 09:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-166361-1-1.html




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

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