关于C++中类的前导申明使用

来源:百度知道 编辑:UC知道 时间:2024/06/06 00:43:20
就是我想在xy类中使用ra类及ra类对象,但ra类还没定义,该怎么解决
代码如下,其实是这两个类都会相互使用
#include<iostream>
using namespace std;
class xy
{
public:
xy(double a,double b)
{
x=a;y=b;
}
operator ra();
private:
double x,y;
};
xy::operator ra()
{
ra aa(10,20);
aa->r=this->x;
aa->a=this->y;
return aa;
}
class ra
{
public:
ra(double x,double y)
{
r=x;a=y;
}
operator xy()
private:
double r,a;
};
ra::operator xy()
{
xy aa(10,20);
aa.x=this->r;
aa.y=this->a;
return aa;
}
int main()
{
return 0;
}
像我这个程序该怎么该啊

给你个例子吧:

class B; //声明一下B类

class A
{

B *b; //这里用指针

};

class B

{

A a;

};
int main()
{

}

意思就是说在对象定义的时候,就应该知道它的空间大小,以便以后new,

这里用指针,是一定会知道的,因为指针4个字节,如果是对象本身,你就需要

知道对象的大小,而对象的大小,需要看它类里面的定义!

在这里你无法提供B类的大小!

#include "stdafx.h"
#include<iostream>
#include <string>
using namespace std;
class ra;
class xy
{
public:
xy(double a,double b)
{
x=a;y=b;
}
operator ra&();
public:
double x,y;
};
xy::operator ra&()
{

return *(ra*)this;//通过转换引用,这里定死了,不能为ra里面

的成员赋值,因为赋值,就要知道类的大小!

}
class ra
{
public:
ra(double x,double y)
{
r=x;a=y;
}
operator xy();
public:
double r,a;
};
ra::operator xy()
{
xy aa(10,20);
aa.x=this->r;