【问题标题】:"returning" an object without including it C++“返回”一个对象而不包括它 C++
【发布时间】:2015-09-18 07:29:55
【问题描述】:

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

我有一个类 vec3,它有 3 个字段 x、y 和 z 其中有一个函数 flatten,我想返回一个 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;
}

x y 和 z 在内存中是连续的吗?我猜不会。

感谢您的宝贵时间。

【问题讨论】:

    标签: c++ pointers object constructor


    【解决方案1】:

    你只需要一个返回类型的部分声明:

    Vec3.h:

    // No #include "Vec2.h" !
    
    class vec2; // Partial declaration
    
    class vec3 {
        //...
        vec2 flatten() const;
        //...
    };
    

    Vec3.cpp:

    #include "Vec2.h"
    
    vec2 vec3::flatten() const {
        //...
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多