代码之家  ›  专栏  ›  技术社区  ›  David

头文件中的Intellisense

  •  3
  • David  · 技术社区  · 15 年前

    我刚刚从C#迁移到C++/CLR。首先我很恼火,因为我不得不将所有类的声明写两次(到.h和.cpp中)。然后我发现,我可以把代码也放到h文件中——它至少可以编译。嗯,我删除了我所有的类的cpp,现在我意识到,VS不会给我任何智能感知,当我在我的h文件工作。

    很抱歉,这是一个新手的问题,但我只是想确保没有任何可能性,使智能感知的hfiles。或者至少要知道,我完全走错了路。。。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Billy ONeal IS4    15 年前

    因为每个类的代码都被内联到每个实现文件中,而这只是intellisense无法可靠解析的更多数据,所以您正在将intellisense从水中吹走。由于超时,它开始失败。

    我知道你说这很烦人,但是你必须把课堂放两次——这就是C++的工作原理。如果你想让它像C#,就用C#。不管怎样,对于.NET平台来说,它是一种更好的语言。

        2
  •  1
  •   quamrana Ryuzaki L    15 年前

    .h文件应该包含声明。你的.cpp文件,定义。

    举个例子:

    b、 小时

    #ifndef B_H    
    #define B_H
    
        class B
        {
          public:
             int foo();
             void Set(int x);
    
          private
             int data_;
        };
    
    #endif
    

    #include <stream>
    #include "b.h"
    
    int B::foo()
    {
       std::cout << "data value " << data_;
       return data_;
    }
    
    void B::Set(int x)
    {
       data_ = x;
    }
    

    在任何使用类型B的对象的地方,都要包含B.h。实现只在B.cpp中进行如果这样做,intellisense应该可以工作