Привет люди stackoverflow,C++ создать и скомпилировать класс
Я новичок, когда дело доходит до C++. Я попытался создать класс, но, конечно, я получаю сообщения об ошибках при компиляции моей программы. Я здесь, надеюсь, некоторые из вас скажут мне, что не так с моей программой, и что я делаю неправильно!
P.S. : Я использую OpenFOAM, поэтому некоторые вещи отличаются, например, расширение «.C» (вместо «.cpp») и использование библиотеки Foam.
Vessels.H
#ifndef Vessels_H
#define Vessels_H
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
class Vessels
{
public:
Vessels(double xCoordinate, double yCoordinate, double zCoordinate, double vesselLength, double vesselRadius, double P_outside, double P_inside);
int pointIndex();
double flowRate();
double wellModel();
private:
double m_xCoordinate, m_yCoordinate, m_zCoordinate, m_vesselLength, m_vesselRadius, m_P_outside, m_P_inside;
double flow, meshVolume, meshSize, equivalentRadius;
int index;
};
#include "Vessels.C"
#endif
Vessels.C
#include "Vessels.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// CONSTRUCTOR
Vessels::Vessels(double xCoordinate, double yCoordinate, double zCoordinate, double vesselLength, double vesselRadius, double P_outside, double P_inside) : m_xCoordinate(xCoordinate), m_yCoordinate(yCoordinate), m_zCoordinate(zCoordinate), m_vesselLength(vesselLength), m_vesselRadius(vesselRadius), m_P_outside(P_outside), m_P_inside(P_inside)
{
}
// METHODS
// Corresponding index for point (xCoordinate,yCoordinate,zCoordinate)
int Vessels::pointIndex()
{
return mesh.findCell(point(m_xCoordinate,m_yCoordinate,m_zCoordinate));
}
// Calculation of flow rate in the vessel using the Hagen-Poiseuille equation
double Vessels::flowRate()
{
return M_PI*Foam::pow(m_vesselRadius,4.0)/(8.0*mu.value*m_vesselLength)*(m_P_inside-m_P_outside);
}
// Numerical well model
double Vessels::wellModel()
{
Vessels vessel(double xCoordinate, double yCoordinate, double zCoordinate, double vesselLength, double vesselRadius, double P_outside, double P_inside);
index = vessel.pointIndex();
flow = vessel.flowRate();
meshVolume = mesh.V()[index];
meshSize = Foam::pow(meshVolume,1.0/3);
equivalentRadius = 3.0*meshSize/(3.0+2.0*M_PI*meshSize);
m_P_inside = P[index] + mu.value*flow/(4.0*M_PI*K)*(1.0/equivalentRadius - 1.0/m_vesselRadius);
return m_P_inside;
}
Если какой-либо интерес для любого, вот мои ошибки компилятора до сих пор:
Vessels.C: In member function ‘double Vessels::flowRate()’:
Vessels.C:65:52: erreur: invalid operands of types ‘double’ and ‘<unresolved overloaded function type>’ to binary ‘operator*’
Vessels.C: In member function ‘double Vessels::wellModel()’:
Vessels.C:73:18: erreur: request for member ‘pointIndex’ in ‘vessel’, which is of non-class type ‘Vessels(double, double, double, double, double, double, double)’
Vessels.C:74:17: erreur: request for member ‘flowRate’ in ‘vessel’, which is of non-class type ‘Vessels(double, double, double, double, double, double, double)’
Vessels.C:79:35: erreur: invalid operands of types ‘<unresolved overloaded function type>’ and ‘double’ to binary ‘operator*’
Vessels.C: In member function ‘double Vessels::flowRate()’:
Vessels.C:66:1: attention : contrôle a atteint la fin non void de la fonction [-Wreturn-type]
спасибо! и я открыт для всех советов, чтобы лучше понять, как использовать C++!
Почему вы включаете в себя Vessels.C в Vessels.h? В том числе Vessels.h на Vessels.C является правильным, но наоборот. – legends2k
'mu.value' - Что это? – soon
@ legendends2k, потому что когда я включаю Vessels.h в свою основную программу, тогда скомпилируйте main, он автоматически скомпилирует мой класс, а также – FYas