返回信息流这个是H文件,忽略fvCFD那个
#include "fvCFD.H"
#ifndef KDF_H
#define KDF_H
class KDF
{
private:
//- Disallow default bitwise copy construct
KDF(const KDF&);
//- Disallow default bitwise assignment
void operator=(const KDF&);
protected:
//- Number of nodes
const int nodes_;
//- Value of sigma
const double sigma_;
//- moments
const double* momentsOri_;
public:
//- Construct from components
KDF
(
const int nodes,
const double sigma,
const double* momentsOri
);
//- Destructor
~KDF();
//- Gaussian method, mementsOri to momentStar
void gaussian
(
const double* momentStar
);
};
#endif
这个是C文件
#include "KDF.H"
KDF::KDF
(
const int nodes,
const double sigma,
const double* momentsOri
):
nodes_(nodes),
sigma_(sigma),
momentsOri_(new double(2*nodes + 1))
{
momentsOri_ = momentsOri;
}
KDF::~KDF()
{};
void KDF::gaussian(const double* momentStar)
{
if(nodes_ == 3)
{
momentStar[0] = momentsOri_[0];
momentStar[1] = momentsOri_[1];
momentStar[2] = momentsOri_[2] - momentsOri_[0]*Foam::sqr(sigma_);
momentStar[3] = momentsOri_[3] - 3*momentsOri_[1]*Foam::sqr(sigma_);
momentStar[4] = momentsOri_[4] - 6*momentsOri_[2]*Foam::sqr(sigma_) + 3*momentsOri_[0]*Foam::sqr(Foam::sqr(sigma_));
momentStar[5] = momentsOri_[5] - 10*momentsOri_[3]*Foam::sqr(sigma_) + 15*momentsOri_[1]*Foam::sqr(Foam::sqr(sigma_));
momentStar[6] = momentsOri_[6] - 15*momentsOri_[4]*Foam::sqr(sigma_) + 45*momentsOri_[2]*Foam::sqr(Foam::sqr(sigma_))
- 15*momentsOri_[0]*Foam::pow(sigma_, 6.0);
}
else if(nodes_ == 4)
{
}
};
如果把这一段注释掉,其他都没问题:
if(nodes_ == 3)
{
momentStar[0] = momentsOri_[0];
momentStar[1] = momentsOri_[1];
momentStar[2] = momentsOri_[2] - momentsOri_[0]*Foam::sqr(sigma_);
momentStar[3] = momentsOri_[3] - 3*momentsOri_[1]*Foam::sqr(sigma_);
momentStar[4] = momentsOri_[4] - 6*momentsOri_[2]*Foam::sqr(sigma_) + 3*momentsOri_[0]*Foam::sqr(Foam::sqr(sigma_));
momentStar[5] = momentsOri_[5] - 10*momentsOri_[3]*Foam::sqr(sigma_) + 15*momentsOri_[1]*Foam::sqr(Foam::sqr(sigma_));
momentStar[6] = momentsOri_[6] - 15*momentsOri_[4]*Foam::sqr(sigma_) + 45*momentsOri_[2]*Foam::sqr(Foam::sqr(sigma_))
- 15*momentsOri_[0]*Foam::pow(sigma_, 6.0);
}
else if(nodes_ == 4)
{
}
这一段的目的,就是通过这个函数,把传进来的数组,使用私有成员数组进行赋值。
比如就是把类的私有成员数组赋值给传入的数组。
报错:
KDF.C: In member function ‘void KDF::gaussian(const double*)’:
KDF.C:32:42: error: lvalue required as left operand of assignment
&momentStar[0] = &momentsOri_[0];
^
KDF.C:33:41: error: assignment of read-only location ‘*(momentStar + 8u)’
momentStar[1] = momentsOri_[1];
^
KDF.C:34:41: error: assignment of read-only location ‘*(momentStar + 16u)’
momentStar[2] = momentsOri_[2] - momentsOri_[0]*Foam::sqr(sigma_);
有没有感兴趣的。。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #88679同步于 2015/9/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
C++类中动态数组赋值问题
sharonyue
2015/9/18镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复