C++ c+中类之间的交叉转换+;

C++ c+中类之间的交叉转换+;,c++,C++,我有一节课 class Cartesian { float x,y,z; }; 还有一节课 class Spherical { float rho, phi, r; }; 我如何在他们之间转换? 我曾尝试在类声明中添加球形笛卡尔::ToSpherecal和笛卡尔球形::toCartesian,但无论我将它们放在哪个顺序,第一个都会抱怨另一个未定义。我已经标记了VS和Ubuntu,因为我希望它能同时工作。做转发声明 class Spherical; class

我有一节课

class Cartesian
{
    float x,y,z;
 };
还有一节课

class Spherical
{
    float rho, phi, r;
};
我如何在他们之间转换?
我曾尝试在类声明中添加
球形笛卡尔::ToSpherecal
笛卡尔球形::toCartesian
,但无论我将它们放在哪个顺序,第一个都会抱怨另一个未定义。我已经标记了VS和Ubuntu,因为我希望它能同时工作。

做转发声明

    class Spherical;
    class Cartesian 
    { 
       float x,y,z;
       Spherical toSpherical();
    };

    class Spherical
    { 
       float rho, phi, r; 
       Cartesian toCartesian();
    };

相关/重复:这些文件是否在同一个文件中?如果是这样,请考虑将它们移动到单独的文件中,并包括标题。如果它们在不同的文件中,您很可能缺少一个包含或链接信息。@NathanOliver,但如果我这样做
类笛卡尔
,然后
类spheremic{}
在spheremic中,我无法评估要转换的笛卡尔函数的成员。@WilliamThompson这就是为什么要使用头文件和cpp文件。将声明放在头文件中,并将需要硬实例的实际代码放在包含这些头文件的cpp文件中。有时这需要重新修改接口,但这只是循环引用在C++中如何工作。请提供。你的例子是最小的,但不完整,正因为如此-不可验证。