對於C++,我相當愚蠢,因爲我來自具有良好Python知識的純Java背景,但我正在嘗試使用一個簡單的C++類來引用頭文件,並在源文件中的函數中訪問它。我可以在構造函數中很好地訪問它,但是隻要我使用函數,根據Eclipse CDT和構建鏈,它顯然不存在。無法在函數內部訪問的類字段
頭文件(simulator.h
):
#ifndef GAME_PHYSICS_SIMULATOR_H_
#define GAME_PHYSICS_SIMULATOR_H_
#include <vector>
#include "../world/object.h"
class simulator {
public:
simulator();
virtual ~simulator();
void add_object(object o);
private:
std::vector<object> objects;
};
#endif /* GAME_PHYSICS_SIMULATOR_H_ */
的源文件(simulator.cpp
):
#include "simulator.h"
simulator::simulator() {
object o;
objects.push_back(o); // Works fine in terms of acknowledging the existence of 'objects'.
}
simulator::~simulator() {}
void add_object(object o) {
objects.push_back(o); // Immediately throws error saying 'objects' doesn't exist.
}
有趣的是,雖然,是,我可以訪問諸如int
的或std::string
的事情精細。只要我嘗試使用矢量,就會中斷。有任何想法嗎?
爲什麼downvote? – finnrayment
目前您將'add_object'定義爲全局非成員函數。 –
Downvote我不知道,但無論如何都投票結束,因爲它可能對未來的訪問者沒有用處,並且標題使得很難發現。 joachim的意思是:如果沒有'simulator ::',編譯器會將它視爲全局命名空間 – stijn