Я уже некоторое время использую одни и те же файлы, но внезапно внося некоторые другие изменения, эта ошибка начала появляться
constraints.cpp:105:5: ошибка: использование необъявленного идентификатора 'constraintViolated'; 'constraintViolated' не был объявлен в области действия
Что такое ошибка "необъявленный идентификатор" и как это исправить?
Я следил за несколькими ответами в приведенной выше ветке, но в моем случае они не казались актуальными. Я не уверен, есть ли что-то еще, вызывающее это. Ясно, что я объявил переменные в заголовке, но они, похоже, не были прочитаны в файле cpp. На самом деле, есть и другие переменные, которые делают то же самое, но я ограничу свой пример этим. Раньше код работал отлично, но некоторые незначительные изменения привели к появлению этой ошибки. Может проблема в сборке?
Я попытался добавить весь соответствующий код. Код ниже,
constraints.cpp
namespace tudat{
Constraint::Constraint(std::string filenameForConstraintData){
constraintViolated = 0;
constraintLengthVehicle = 0.0;
constraintDiameterVehicle = 2.44;
}
void checkVehicleConstraints(int launchVehicleType, int numberOfStages, double lengthVehicle, double diameterVehicle, Eigen::Vector3d diameterMotorCaseStage,
Eigen::Vector3d diameterNozzleExitStage, Eigen::Vector3d lengthMotorCaseStage){
constraintViolated = 0;
constraintLengthVehicle = 25.0;
constraintDiameterVehicle = 2.44;
if (totalLengthOfTheVehicle/diameterMotorCaseStage1 > maxLOverDRatio){
constraintViolated = 1;
if (printConstraints_ == 1){
std::cout<< "Length is"<< totalLengthOfTheVehicle << std::endl;
}
}
}
constraints.h
namespace tudat
{
class Constraint{
public:
Constraint(std::string filenameForConstraintData);
int getConstraintViolated(){ return constraintViolated; }
// void checkTrajectoryConstraints(const std::vector< tudat::basic_astrodynamics::AccelerationModel3dPointer > listOfAccelerationsActingOnLaunchVehicle,
// const boost::shared_ptr< tudat::RocketLaunchVehicle > launchVehicle,
// const boost::shared_ptr< EnvironmentUpdater > environmentUpdater);
// void checkVehicleConstraints(int launchVehicleType, int numberOfStages, double lengthVehicle, double diameterVehicle,
// double diameterMotorCaseStage1, double diameterMotorCaseStage2, double diameterMotorCaseStage3,// double diameterMotorCaseStage4,
// double diameterNozzleExitStage1,double diameterNozzleExitStage2, double diameterNozzleExitStage3, // double diameterNozzleExitStage4,
/* double vacuumThrustStage1, double massStartStage1, double deltaVVehicle, double vacuumThrfustStage3, */
// double lengthMotorCaseStage1, double lengthMotorCaseStage2, double lengthMotorCaseStage3 ); //, double lengthMotorCaseStage4);
void checkVehicleConstraints(int launchVehicleType, int numberOfStages, double lengthVehicle, double diameterVehicle,
Eigen::Vector3d diameterMotorCaseStage,
Eigen::Vector3d diameterNozzleExitStage,
Eigen::Vector3d lengthMotorCaseStage);
private:
int constraintViolated;
int printConstraints_;