BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #81153同步于 2014/7/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【求助】关于类的一个小问题

NM999
2014/7/30镜像同步24 回复
假设定义了两个类,在不同的h文件中,这两个类都要用到对方的成员函数,该怎么做呢,我试了声明,互相#include,都会报错, 还有如果一个类中有另一个类的指针,当通过这个指针调用另一个类的成员函数时候会报这个错,请问是为什么呢 error C2784: “'unknown-type' std::operator -(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &)”: 未能从“std::_Tree_const_iterator<_Mytree>”为“const std::_Revranit<_RanIt,_Base> &”推导 模板 参数 thx
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
gsl2011机器人#1 · 2014/7/30
第一个问题可以前置声明, 第二个问题可能是你没引用头文件或者模版用错了。 来自「北邮人论坛手机版」
NM999机器人#2 · 2014/7/30
【 在 gsl2011 的大作中提到: 】 : 第一个问题可以前置声明, 第二个问题可能是你没引用头文件或者模版用错了。 : 来自「北邮人论坛手机版」 不行啊,貌似,只是申明,只能使用指针和引用,不能用成员函数,VS2012 来自「北邮人论坛手机版」
NM999机器人#3 · 2014/7/30
【 在 gsl2011 的大作中提到: 】 : 第一个问题可以前置声明, 第二个问题可能是你没引用头文件或者模版用错了。 : 来自「北邮人论坛手机版」 对对对,就是模版用错了,但有不知道哪错了-- 来自「北邮人论坛手机版」
gdl机器人#4 · 2014/7/31
上代码,别人才好帮你
gaoweiwei机器人#5 · 2014/7/31
re ls
NM999机器人#6 · 2014/7/31
代码贴了,在ls,请大神帮忙看看吧 【 在 gaoweiwei 的大作中提到: 】 : re ls
gdl机器人#7 · 2014/7/31
set容器没有距离概念,他是集合,迭代器也就不能加减运算。至于++和--能用,我觉得是仅用来移动的 【 在 NM999 的大作中提到: 】 : 代码贴了,在ls,请大神帮忙看看吧
NM999机器人#8 · 2014/7/31
按错了,把那个删了-- 【 在 gdl 的大作中提到: 】 : set容器没有距离概念,他是集合,迭代器也就不能加减运算。至于++和--能用,我觉得是仅用来移动的
NM999机器人#9 · 2014/7/31
我把问题简化了:就是下面这个程序 class1.h #include <iostream> using namespace std; class class2; class class1{ public: class1():i(0), cl1(1){} int return_1(){return cl1;} void set_class(class2 *); friend void display_class1(class1 &); private: class2 *i; int cl1; }; class2.h #include <iostream> using namespace std; class class1; class class2{ public: class2():i(0), cl2(2){} int return_2(){return cl2;} void set_class(class1 *); friend void display_class2(class2 &); private: class1 *i; int cl2; }; main.cpp #include <iostream> #include "class1.h" #include "class2.h" using namespace std; void display_class2(class2 &); void display_class1(class1 &); int main(){ class1 c1; class2 c2; c2.set_class(&c1); c1.set_class(&c2); display_class2(c2); display_class1(c1); cin.get(); return 0; } void display_class2(class2 &c2){ cout << *c2.i << ' ' << c2.cl2 << endl; return; } void display_class1(class1 &c1){ cout << *c1.i << ' ' << c1.cl1 << endl; return; } 现在这个程序报错了,但不知道为什么 【 在 gdl 的大作中提到: 】 : set容器没有距离概念,他是集合,迭代器也就不能加减运算。至于++和--能用,我觉得是仅用来移动的