| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 114 人关注过本帖
标题:类向前声明小问题
只看楼主 收藏
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:87
专家分:154
注 册:2017-11-15
结帖率:54.55%
  已结贴   问题点数:20  回复次数:5   
类向前声明小问题
两个类,类中相互要用到对方的指针,就把其中一个类向前声明了
但是编译报错了,想请问下是错在哪?谢谢。
程序代码:
#include <iostream>

using namespace std;
class Visitor;//,,,,,,,
//被访问者
class Library{
private :
    int x,y;
public :
    Library(){
        x=0;
        y=0;
    }
    void Accept(Visitor *v){
        v->visit(this);
    }
    void Do(){
        cout<<"x="<<x<<endl;
        cout<<"y="<<y<<endl;
    }
    ~Library(){
        cout<<"Library xigou"<<endl;
    }
};
//访问者
class Visitor{
public :
    Visitor(){
        cout<<"efas"<<endl;
    }
    void visit(Library *l){
        l->Do();
    }

};

int main()
{
   Visitor *pv=new Visitor();
   Library  *pl=new Library();
   pl->Accept(pv);
   delete pl;
   delete pv;
}

加上错误信息。


[此贴子已经被作者于2018-5-16 00:31编辑过]

附件: 您没有浏览附件的权限,请 登录注册
6 天前 00:30
lin5161678
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:182
专家分:464
注 册:2011-12-3
  得分:20 
不要在类内部写成员函数的实现
把实现写在2个类下面就可以了
6 天前 00:36
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:87
专家分:154
注 册:2017-11-15
  得分:0 
回复 2楼 lin5161678
你好,你的回答不太懂,可以再给我详细说下吗?谢谢。
6 天前 00:39
lin5161678
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:182
专家分:464
注 册:2011-12-3
  得分:0 
程序代码:
#include <iostream>

using namespace std;
class Visitor;//,,,,,,,
//被访问者
class Library{
private :
    int x,y;
public :
    Library(){
        x=0;
        y=0;
    }
    void Accept(Visitor *v);
    void Do();
    ~Library();
};
//访问者
class Visitor{
public :
    Visitor(){
        cout<<"efas"<<endl;
    }
    void visit(Library *l);

};

void Library::Accept(Visitor *v){
    v->visit(this);
}

void Library::Do(){
    cout<<"x="<<x<<endl;
    cout<<"y="<<y<<endl;
}

void Visitor::visit(Library *l){
    l->Do();
}

int main()
{
   Visitor *pv=new Visitor();
   Library  *pl=new Library();
   pl->Accept(pv);
   delete pl;
   delete pv;
}
收到的鲜花
  • 丘山君 于 2018-5-16 01:10 送鲜花  1朵  
6 天前 00:44
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:87
专家分:154
注 册:2017-11-15
  得分:0 
回复 4楼 lin5161678
谢谢。
6 天前 01:14
Jonny0201
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:8
帖 子:223
专家分:914
注 册:2016-11-7
  得分:0 
用指针的方式相互引用要用分离编译
否则可能会出现无止尽的调用
4 天前 13:44







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

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