Здравствуйте, bookevg, Вы писали:
B>Как сделать, чтоб IntelliSense работал в Visual Studio Net 2003
B>или есть ли другой механизм объявления глобальной переменной из пространсва имен
B>Ведь в самом в Visual Studio Net 2003 при использовании объектов std::cin или std::cout IntelliSense работает
Если интересует просто удобные подсказки и выделение слов — поставьте Visual Assist. Он все показывает. И вообще покруче будет встроенного IntelliSense
Здравствуйте, _Dreamer, Вы писали:
_D>Здравствуйте, bookevg, Вы писали:
B>>Как сделать, чтоб IntelliSense работал в Visual Studio Net 2003
B>>или есть ли другой механизм объявления глобальной переменной из пространсва имен
B>>Ведь в самом в Visual Studio Net 2003 при использовании объектов std::cin или std::cout IntelliSense работает
_D>Если интересует просто удобные подсказки и выделение слов — поставьте Visual Assist. Он все показывает. И вообще покруче будет встроенного IntelliSense
Поставил, но не помогло (работает, если обращаться как nmBr.Q.Set_Sts(100) — но данный код не компилиться, т.к. надо nmBr::Q.Set_Sts(100)). Может кто знает, как сделать глобальный экземпляр класса из пространства имен, чтоб к нему можно было обращаться как к объектам std::cin и std::cout и при этом была возможность быстрой подсказки. Вот бы узнать как Microsoft это удалось сделать.
Большое спасибо за ответ. Проблему решил следующим образом:
Есть несколько файлов:
------------------------------------------------------------------
var.h
namespace nmBreaker
{
class CBreaker // объявление класса
{
...
Set_Sts(char Addr);
};
}
namespace nmBr
{
extern nmBreaker::СBreaker Q;
}
------------------------------------------------------------------
var.c
using namespace nmBreaker;
#include "var.h"
// реализация класса
CBreaker::Set_Sts(char Addr)
{
...
}
// определение класса
CBreaker nmBr::Q;
------------------------------------------------------------------
user1.c
#include "var.h"
void func1 () {
nmBr::Q.Set_Sts(100); // не работает IntelliSense
}
------------------------------------------------------------------
user2.c
#include "var.h"
void func2 () {
nmBr::Q.Set_Sts(150); // не работает IntelliSense
}
Hello, bookevg, you wrote:
> ------------------------------------------------------------------
> var.h
> namespace nmBr
> {
> class CBreaker // объявление класса
> {
> ...
> Set_Sts(char Addr);
> };
> extern СBreaker Q;
> }
> ------------------------------------------------------------------
> var.c
> //using namespace nmBr; это убираем
> #include "var.h"
namespace nmBr { // Здесь добавляем
> // реализация класса
> CBreaker::Set_Sts(char Addr)
> {
> ...
> }
> // определение класса
> CBreaker Q; // Здесь подправляем
} // Здесь добавляем
> ------------------------------------------------------------------
> user1.c
> #include "var.h"
> void func1 () {
> nmBr::Q.Set_Sts(100); // не работает IntelliSense
> }
> ------------------------------------------------------------------
> user2.c
> #include "var.h"
> void func2 () {
> nmBr::Q.Set_Sts(150); // не работает IntelliSense
> }
> ------------------------------------------------------------------
Только после того как я заменил using на namespace scope, у меня заработал
VisualAssist, как вы хотели, т.е. когда наберешь nmBr:: он показывает CBeaker и
Q.
Обычно реализацию классов и т.п. опрееленных в пространствах имен определяют
тоже обернутой в эти пространства, а не using namespace... ИМХО.
P.S. По-моему, пришлось скомпилить код для того, чтобы VisualAssist заработал,
до этого он не хотел...
--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9