返回信息流假设定义了两个类,在不同的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
这是一条镜像帖。来源:北邮人论坛 / cpp / #81153同步于 2014/7/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【求助】关于类的一个小问题
NM999
2014/7/30镜像同步24 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 gsl2011 的大作中提到: 】
: 第一个问题可以前置声明, 第二个问题可能是你没引用头文件或者模版用错了。
: 来自「北邮人论坛手机版」
不行啊,貌似,只是申明,只能使用指针和引用,不能用成员函数,VS2012
来自「北邮人论坛手机版」
【 在 gsl2011 的大作中提到: 】
: 第一个问题可以前置声明, 第二个问题可能是你没引用头文件或者模版用错了。
: 来自「北邮人论坛手机版」
对对对,就是模版用错了,但有不知道哪错了--
来自「北邮人论坛手机版」
set容器没有距离概念,他是集合,迭代器也就不能加减运算。至于++和--能用,我觉得是仅用来移动的
【 在 NM999 的大作中提到: 】
: 代码贴了,在ls,请大神帮忙看看吧
按错了,把那个删了--
【 在 gdl 的大作中提到: 】
: set容器没有距离概念,他是集合,迭代器也就不能加减运算。至于++和--能用,我觉得是仅用来移动的
我把问题简化了:就是下面这个程序
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容器没有距离概念,他是集合,迭代器也就不能加减运算。至于++和--能用,我觉得是仅用来移动的