我最近刚开始接触 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/