Я пытаюсь скомпилировать следующий простой код C ++ как собственный код Android с помощью NDK и Eclipse CDT:
#include <vector>
using namespace std;
class Pt {
public:
Pt(int _x, int _y);
int x;
int y;
};
Pt::Pt(int _x, int _y){
x = _x;
y = _y;
}
void test(){
std::vector<Pt> pts;
pts.push_back(Pt(2,3));
int i = pts[0].x; //error here
}
Я могу без проблем скомпилировать код с ndk-build.cmd
из командной строки, и я даже могу скомпилировать его из Eclipse. Проблема в том, что в последней строке (где есть комментарий // error) редактор Eclipse сообщает о следующей ошибке:
Field 'x' could not be resolved
Возможные решения:
- напишите
pts[0].x
вот так:int i = ((Pt)pts[0]).x;
- используйте var:
Pt apt = pts[0]; int i = apt.x;
(удивительно, это работает)
Я потратил почти 2 дня, пытаясь настроить eclipse с настраиваемыми путями для включения файлов, игры с индексатором, обновления до последней версии NDK и всего остального, что я могу себе представить. Проблема остается. Эта проблема, очевидно, возникает с каждым классом, который принимает параметризованный тип (не только с вектором). Хотя Eclipse компилирует код, факт сообщения об этой ошибке приводит к тому, что проект Android помечается как «имеющий ошибки», что делает невозможным его запуск в целом.
Любая помощь очень ценится, спасибо