c++ - 在 C++ 中将数组作为对象返回

标签 c++ arrays class object

我最近刚开始接触 C++ 并就以下主题进行了一些讨论:

我有一个具有 3 个 double 值的类,我将对象“supportRefl[4]”创建为一个数组。

我现在想在类“散射”的函数“位置”中返回数组,但我找不到方法。

如果你能告诉我怎么做,我将不胜感激。

这是类:

class Quelle
{
private:
    double distanceq;
    double elevationq;
    double azimuthq;

public:
    void SetValue(double distance, double elevation, double azimuth);
    double Getd(){return distanceq;}
    double Gete(){return elevationq;}
    double Geta(){return azimuthq;}

Quelle(double distance=0, double elevation=0, double azimuth=0); 
//constructor
~Quelle(); //destructor
};

void Quelle::SetValue(double distance, double elevation, double 
azimuth)
{
    distanceq = distance;
    elevationq = elevation;
    azimuthq = azimuth;
}

Quelle::Quelle(double distance, double elevation, double azimuth) 
//constructor
{
}

Quelle::~Quelle() // destructor
{
}

这里是我想将数组返回的函数: 我知道你有一个指向数组第一个地址的指针,但它根本不起作用。

*double Scattering::position(const double &distance, const double &elevation, const double &azimuth, const double &intensity)
{
    double intensity_position = intensity * 10 * 5;

    m[0] = distance;
    m[1] = elevation;
    m[2] = azimuth;

    double lo[3] = {m[0], m[1]+intensity_position, m[2]-intensity_position}; //zusammenfassen
    double ro[3] = {m[0], m[1]+intensity_position, m[2]+intensity_position};
    double lu[3] = {m[0], m[1]-intensity_position, m[2]-intensity_position};
    double ru[3] = {m[0], m[1]-intensity_position, m[2]+intensity_position};

    //create instances
    Quelle upperLeft(0,0,0);
    Quelle upperRight(0,0,0);
    Quelle lowerLeft(0,0,0);
    Quelle lowerRight(0,0,0);

    const int NUMBER = 4;

    Quelle supportRefl[NUMBER];

    supportRefl[0].SetValue(lo[0],lo[1],lo[2]);
    supportRefl[1].SetValue(ro[0],ro[1],ro[2]);
    supportRefl[2].SetValue(lu[0],lu[1],lu[2]);
    supportRefl[3].SetValue(ru[0],ru[1],ru[2]);

    return supportRefl[];

}

非常感谢您的帮助, 干杯西蒙

最佳答案

C++ 无法按值返回原始数组。正如其他人所建议的那样,您可以使用 std::array 这是一个简单地包装原始数组的 struct

例如像这样:

typedef std::array<Quelle,4> QuelleX4;

QuelleX4 Scattering::position(const double &distance, const double &elevation, const double &azimuth, const double &intensity)
{
    QuelleX4 supportRefl;
    supportRefl[0].SetValue(lo[0],lo[1],lo[2]);
    supportRefl[1].SetValue(ro[0],ro[1],ro[2]);
    supportRefl[2].SetValue(lu[0],lu[1],lu[2]);
    supportRefl[3].SetValue(ru[0],ru[1],ru[2]);
    return supportRefl;
}

或者,定义您自己的 struct 或使用 std::vector,但这是在堆上分配的,因此需要付出代价。

关于c++ - 在 C++ 中将数组作为对象返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44208794/

相关文章:

c++ - 尝试不阻塞地读取键盘输入(Windows、C++)

c# - 检测字节数组C#的编码

c++ - 在类中使用 vector 创建类

c# - 将结构转换为 intptr

php - 是否有用于处理单位和数量的 PHP 库/类?

c++ - 是否可以将 dll 添加到资源中,并使用 LoadLibrary 从资源中加载该 dll? C++

c++ - 具有相同类型的键和值的多重映射是否有意义?

c++ - 获取 TrueType 字体中字母的 vector 点

javascript - Google Maps API V3 和 Javascript 结果和标记

java - 如何以通用方式使用算术运算来减少原始数组?