头文件中的Intellisense

时间:2010-03-16 16:59:02

标签: c++ visual-studio-2008 clr intellisense header-files

我刚刚从C#“迁移”到C ++ / CLR。首先,我很生气,我必须两次写所有类的声明(进入.h和.cpp)。然后我发现,我可以将代码也放入h文件中 - 它至少可以编译。好吧,我删除了所有课程的cpp,现在我意识到,当我处理我的h文件时,VS不会给我任何Intellisense。

我想我不应该把我的代码放在hfiles中(代码肯定不会在其他项目中重复使用),但我觉得在两个地方调整所有方法声明很糟糕...另外我必须切换来回看看我的方法是什么修饰符等等,并且它在C#中的所有地方都不是很好(有它的优点和缺点)。

对不起,这是一个新手问题,但我只是想确保没有任何可能为hfiles启用intellisense。或者至少要了解,我完全走错了道路......

谢谢大卫

2 个答案:

答案 0 :(得分:1)

您的.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应该工作

答案 1 :(得分:0)

你正在将智能感知从水中吹出,因为每个类的代码都被内联到每个实现文件中,而这只是比Intellisense可以解析的更多数据。由于超时,它开始失败。

我知道你说这很烦人,但你必须把课程放两次 - 这就是C ++的工作方式。如果您希望它的行为类似于C#,请使用C#。无论如何,它是.NET平台的更好语言。