"返回"一个对象而不包括C++

max*_*axx 4 c++ constructor pointers object

我希望这没有被问过太多次,我试图搜索但是找不到任何东西(也许我只是不知道如何用正确的术语来表达).简单的问题:

我有一个类vec3,它有3个字段x,y和z,其中有一个函数展平,我想返回一个vec2对象(或者可以构造一个vec2对象的东西),它只有字段x和y.由于这是vec3类中唯一与vec2有关的功能,我不想包含vec2.有没有更好的方法来返回这样一个没有任何包含的简单对象(两个双打)?

我想要返回一个指针,但如果我这样做会发生什么:

vec2 v2 = vec3(x,y,z).flatten(); // vec3(x,y,z) is the constructor

当v2尝试从它们构造时,临时vec3对象x和y数据是否仍然存在?在这种情况下vec2 = double*将在vec2类中定义.

vec3和vec2看起来像这样:

class vec3{
   double x,y,z;
}
Run Code Online (Sandbox Code Playgroud)

xy和z会在内存中连续吗?我猜不会.

感谢您的时间.

Que*_*tin 5

您只需要返回类型的部分声明:

Vec3.h:

// No #include "Vec2.h" !

class vec2; // Partial declaration

class vec3 {
    //...
    vec2 flatten() const;
    //...
};
Run Code Online (Sandbox Code Playgroud)

Vec3.cpp:

#include "Vec2.h"

vec2 vec3::flatten() const {
    //...
}
Run Code Online (Sandbox Code Playgroud)