Редактор Eclipse не распознает типы шаблонов C ++ при использовании Android NDK

Я пытаюсь скомпилировать следующий простой код 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 помечается как «имеющий ошибки», что делает невозможным его запуск в целом.

Любая помощь очень ценится, спасибо


person user3406992    schedule 11.03.2014    source источник


Ответы (1)


Может быть, это может вам помочь , вы должны включить правильные заголовки для STL в свойствах проекта.

person Yuvi    schedule 11.03.2014
comment
Я сделал все это; они были необходимы для распознавания типа std (например, вектора). Но проблема здесь в том, что "возвращаемые типы" шаблона не распознаются в редакторе. Обратите внимание, что Eclipse не говорит, что «вектор» нераспознан; он скорее говорит, что «x» не может быть разрешено (и это только при использовании определенного синтаксиса). - person user3406992; 12.03.2014