我刚刚从C#“迁移”到C ++ / CLR。首先,我很生气,我必须两次写所有类的声明(进入.h和.cpp)。然后我发现,我可以将代码也放入h文件中 - 它至少可以编译。好吧,我删除了所有课程的cpp,现在我意识到,当我处理我的h文件时,VS不会给我任何Intellisense。
我想我不应该把我的代码放在hfiles中(代码肯定不会在其他项目中重复使用),但我觉得在两个地方调整所有方法声明很糟糕...另外我必须切换来回看看我的方法是什么修饰符等等,并且它在C#中的所有地方都不是很好(有它的优点和缺点)。
对不起,这是一个新手问题,但我只是想确保没有任何可能为hfiles启用intellisense。或者至少要了解,我完全走错了道路......
谢谢大卫
答案 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平台的更好语言。