我們正在使用C++開發一個項目。我試圖爲每個類創建頭文件和源文件,只需在Eclipse中創建一個類即可。聲明由所有類訪問的全局變量C++
我想要實現的不是聲明一個全局變量,可以從所有的類訪問。
例如,
Im_Position.cpp
#include "Im_Position.h"
void Im_Position::Im_GetPosition (const nav_msgs::Odometry::ConstPtr& msg)
{
vehicle_position.x_pose = msg->pose.pose.position.x;
vehicle_position.y_pose = msg->pose.pose.position.y;
vehicle_position.x_orient = msg->pose.pose.orientation.x;
vehicle_position.y_orient = msg->pose.pose.orientation.y;
vehicle_position.z_orient = msg->pose.pose.orientation.z;
vehicle_position.w_orient = msg->pose.pose.orientation.w;
}
Im_Position.h
#include "nav_msgs/Odometry.h"
class Im_Position {
public:
void Im_GetPosition(const nav_msgs::Odometry::ConstPtr& msg);
};
我得到的Im_Position.cpp一個錯誤,說vehicle_position是沒有在此範圍內聲明。我不知道它是由我的編碼風格還是Eclipse的鏈接問題引起的。我使用Ubuntu 12.04和ROS環境。
Im_RobotKontrol.cpp
#include "Im_Position.h"
typedef struct{
double x_pose;
double y_pose;
double x_orient;
double y_orient;
double z_orient;
double w_orient;
} position_type;
extern position_type vehicle_position;
int main()
{
...
}
正是在這上面可以看出另一個源文件實際上宣佈,因爲我希望它在所有類別中使用。 任何幫助將不勝感激。
全局變量是個壞主意。嘗試重新設計以避免使用。 –