Emacs, завершение кода C++ для векторов

Я плохо знаком с Emacs, и у меня есть следующий код как образец. Я установил GNU Emacs 23.1.1 (i386-mingw-nt6.1.7600), установили cedet-1.0pre7.tar.gz., установленный ELPA и компания. Можно найти мою простую конфигурацию Emacs внизу.

Проблема, когда я тип q [0] в основном () и нажатие. (точка), я вижу 37 членов вектора, не Человека, хотя first_name и last_name ожидаются. Работы завершения как ожидалось в функции приветствуют (), но она не имеет никакого отношения к вектору.

Мой вопрос, как я могу выполнить завершение кода для векторных элементов также?

#include 
#include 
using namespace std;

class Person
{
  public:
    string first_name;
    string last_name;
};

void greet(Person a_person)
{
  // a_person.first_name is completed as expected!
  cout << a_person.first_name << "|";
  cout << a_person.last_name << endl;
};

int main()
{
  vector q(2);

  Person guy1;
  guy1.first_name = "foo";
  guy1.last_name = "bar";

  Person guy2;
  guy2.first_name = "stack";
  guy2.last_name = "overflow";

  q[0] = guy1;
  q[1] = guy2;
  greet(guy1);
  greet(guy2);
  // cout q[0]. I want to see first_name or last_name here!
}

Моя конфигурация Emacs:

;;; This was installed by package-install.el.
;;; This provides support for the package system and
;;; interfacing with ELPA, the package archive.
;;; Move this code earlier if you want to reference
;;; packages in your .emacs.
(when
    (load
     (expand-file-name "~/.emacs.d/elpa/package.el"))
  (package-initialize))

(load-file "~/.emacs.d/cedet/common/cedet.el")
(semantic-load-enable-excessive-code-helpers)
(require 'semantic-ia)

(global-srecode-minor-mode 1)
(semantic-add-system-include "/gcc/include/c++/4.4.2" 'c++-mode)
(semantic-add-system-include "/gcc/i386-pc-mingw32/include" 'c++-mode)
(semantic-add-system-include "/gcc/include" 'c++-mode)


(defun my-semantic-hook ()
  (imenu-add-to-menubar "TAGS"))
(add-hook 'semantic-init-hooks 'my-semantic-hook)

6
задан Caglar Toklu 12 March 2010 в 17:20
поделиться

2 ответа

Это известная проблема семантического анализатора. В настоящее время я не могу иметь дело со специализацией Template Specialization , которая используется в gcc STL (ваша проблема проистекает из такой специализации в allocator.h). Это обсуждалось в списке рассылки:

http://thread.gmane.org/gmane.emacs.semantic/2137/focus=2147

7
ответ дан 10 December 2019 в 00:36
поделиться

GCCSense

Пример завершения кода C ++ в Emacs:

emacs gccsense screenshot

3
ответ дан 10 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: