3

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

我想我不应该将我的代码放在 hfiles 中(代码肯定不会在其他项目中重用),但我发现在两个地方调整所有方法声明很糟糕......另外我必须来回切换查看我的方法等的修饰符,它不像在 C# 中那样很好地集中在一个地方(有它的优点和缺点)。

对不起,这是一个新手问题,但我只是想确保不可能为 hfiles 启用智能感知。或者至少要学习,我完全走错了路……

谢谢,大卫

4

2 回答 2

1

您的 .h 文件应包含声明。您的 .cpp 文件、定义。

这是一个例子:

bh

#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 bh 实现只在 b.cpp 如果你这样做,智能感知应该可以工作

于 2010-03-16T17:08:12.080 回答
1

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

我知道你说这很烦人,但你必须把这个类放在两次——这就是 C++ 的工作原理。如果您希望它表现得像 C#,请使用 C#。无论如何,它对于 .NET 平台来说是一种更好的语言。

于 2010-03-16T17:18:04.813 回答