Intellisense в заголовочных файлах - PullRequest
3 голосов
/ 16 марта 2010

Я только что "мигрировал" из C # в C ++ / CLR. Сначала меня раздражало, что я должен был написать все объявления класса дважды (в .h и .cpp). Затем я понял, что мог бы поместить код также в h-файлы - по крайней мере, он компилируется. Ну, я удалил все cpp моих классов, и теперь я понял, что VS не выдаст мне Intellisense, когда я буду работать с h-файлами.

Полагаю, мне не следует помещать свой код в hfiles (код наверняка не будет повторно использоваться в других проектах), но я нахожу ужасным корректировать все объявления методов в двух местах ... Плюс я должен переключиться взад и вперед, чтобы увидеть, какой модификатор мой метод и т. д., и он не совсем в одном месте, как в C # (со своими плюсами и минусами).

Извините, это вопрос новичка, но я просто хотел убедиться, что нет возможности включить intellisense для файлов hfiles. Или хотя бы узнать, что я совершенно на неверном пути ...

Спасибо, Дэвид

Ответы [ 2 ]

1 голос
/ 16 марта 2010

Ваши .h файлы должны содержать объявления. ваши .cpp файлы, определения.

Вот пример:

b.h

#ifndef B_H    
#define B_H

    class B
    {
      public:
         int foo();
         void Set(int x);

      private
         int data_;
    };

#endif

b.cpp

#include <stream>
#include "b.h"

int B::foo()
{
   std::cout << "data value " << data_;
   return data_;
}

void B::Set(int x)
{
   data_ = x;
}

В любом месте, где вы будете использовать объекты типа B, вы #include b.h. Реализация только в b.cpp. Если вы это сделаете, intellisense должен работать

0 голосов
/ 16 марта 2010

Вы выбрасываете intellisense из воды, потому что код для каждого класса встраивается в каждый файл реализации, и это просто больше данных, чем Intellisense может надежно проанализировать. Это начинает терпеть неудачу из-за таймаутов.

Я знаю, вы сказали, что это раздражает, но вы должны поместить класс в два раза - так работает C ++. Если вы хотите, чтобы он вел себя как C #, используйте C #. В любом случае, это лучший язык для платформы .NET.

...