所以,我有一个算法,需要几个传感器,将它们缩放到一个温度,并将临时值放在一个全局数据存储中。但是,传感器类A执行B类所需的更多计算。我不能把新的calcs放在数据存储中,我不想在B类中包含A类只是为了用getter获取一个数据。
Class A
{
private:
float x[4];
float y[4];
public:
//Scaling functions, etc...
}
Class B
{
private:
float c[4];
public:
//Scaling functions etc...
}
将x [4]传递给B类放入c [4]的最佳方法是什么?真正的课程还有很多,这跟我想的一样简单。 x [4]具有需要在B类中使用的数据。
答案 0 :(得分:2)
答案 1 :(得分:2)
class A
{
private:
float x[4];
float y[4];
public:
float* getXs()
{
return x;
}
}
class B
{
private:
float c[4];
public:
//Scaling functions etc...
void setXs(float *x)
{
for (int i=0;i<4;i++)
c[i] = x[i];
}
}
答案 2 :(得分:1)
在调用B的构造函数时,在A的实例上使用x [4]的getter。
#include <string.h>
class A
{
private:
float x[4];
float y[4];
public:
float const *xArray() const
{
return x;
}
};
class B
{
private:
float c[4];
public:
void setCArray(float const arr[4])
{
memcpy(c, arr, 4 * sizeof(int));
}
};
int main()
{
A a;
B b;
b.setCArray(a.xArray());
}
答案 3 :(得分:1)
有很多方法。最好的取决于您的标准。
如果时间对你不重要,我会很简单并使用复制构造函数:
Class A
{
private:
float x[4];
float y[4];
public:
const float& X(int i) { return x[i]; }
}
Class B
{
private:
float c[4];
public:
B( const A& a ) {
for( k = 0; k < 4; k++ )
c[k] = a.X(k);
}
}
如果时间至关重要,您可以考虑使用指针复制。但要非常准确:
Class A
{
private:
friend B;
float x[4];
float y[4];
public:
...
}
Class B
{
private:
const float* const c;
public:
B( const A& a ):c(a.x){}
// use c like c[4], but don't change it.
}