注册 登录
编程论坛 C++教室

关于类的声明! 新手求助.

lvyan 发布于 2008-04-22 15:11, 638 次点击
高手帮忙看下. 程序没有错误,我声明了Weapon类还是显示没有定义类...
 PS:把两个类位置换一下运行正常.     
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;

class Weapon;
class Actor
{  
  private:
     string _name;
     int _dj;
     Weapon _wuqi;
   public:
      Actor()
       {  }
      Actor(string name,int dj)
      :_name(name),_dj(dj)
      {
      
         }
      void set(Weapon &n)
      
      {   _wuqi=n;
          }
     void display()
     {  
      cout<<_name<<setw(4)<<_dj<<"级"<<endl;
       _wuqi.show();
       }
      
};


class Weapon
{
  private:
     string _name;
     int  _power;
  public:
     Weapon()
      {  }
     Weapon(string name,int power)
     :_name(name),_power(power)
     {  
          }
     
     void show()
     {  
       cout<<"武器名:"<<_name<<endl;
       cout<<"攻击力:"<<_power<<endl;
       }
};





int main()
{  
  
   
  Actor js("lvyan",20);
 Weapon wuqi("打狗棒",25);
  js.set(wuqi);
  
  js.display();

  return 0;
  }
6 回复
#2
aipb20072008-04-22 15:36
书看的不仔细啊。
Weapon _wuqi;
这个时候Weapon是个不完全类,即没有定义。那么你唯一能做的是告诉编译其将会有这么一个类型,然而你不能对这个类做任何预知,比如你不能构造它,因为你不知道他将有什么样的构造函数,也不能调用他的方法,你根本不知道他有什么方法。
那你能做什么?
Weapon *pw;
Weapon &w;

总之一句话,不要对现在还不存在的东西做任何假设。
#3
lvyan2008-04-22 15:48
拜托..不是我书看的不仔细,是这个书上就没介绍..
  我是个新手,才学类这一章. 所以请你们高手指教.
  你说得那么深奥,意思就是没有定义Weapon类之前不能使用它去定义对象?
  也就是说我这样写是错误的..(只能把Weapon类放到前面)
   ... 回答下.
#4
lvyan2008-04-22 16:04
我发现现在学的这本书还真有点误人子弟呢..
  讲都没讲清楚..
    不过还好,不算太差.
   各位牛人能不能把你们初识C++时的教材推荐一下啊.!
    在此先谢过了..
#5
存秦2008-04-23 03:50
回复 3# 的帖子
类可以先定义,再说明吗?不可以吧!
#6
尐妖2008-04-23 12:19
类还可以理解下.
#7
keyall2008-04-24 21:40
[bo]以下是引用 [un]存秦[/un] 在 2008-4-23 03:50 的发言:[/bo]

类可以先定义,再说明吗?不可以吧!



先说明再定义吧....
1