Я довольно глуп, когда речь заходит о C++, поскольку я из чистого Java-фона с хорошим знанием Python, но я пытаюсь создать простой класс 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