在Visual Studio中使用本机c ++时,即使在包含类的范围之外,intellisense也会显示私有成员和函数。这使我很难为我编写的类创建干净的API。
这有什么理由吗?这可以预防吗?
答案 0 :(得分:3)
原因可能只有微软知道。 (我认为Intellisense目前不会检查你的位置,所以它不知道你是否在课堂内(并且可以访问私人会员)或在外面)
我实际上不知道是否或如何预防。
但据我所知,他们有一个带锁的Icon,所以你知道他们是私人的。也许这有帮助
答案 1 :(得分:2)
那么,为什么它也不应该显示私人的呢?毕竟,他们是成员,他们存在,并且他们可以从某些环境中完全访问,就像任何其他成员一样。
IntelliSense很难确定成员是否可以从这个特定的上下文访问,特别是如果你考虑到在大多数情况下这个上下文尚未完成(用户仍在输入) ,这意味着通常无法分析它。
答案 2 :(得分:0)
不幸的是,这只适用于您制作的任何内容,但如果您使用大量自己的库,仍需记住这些内容。
我为我创建的任何库做的一件事就是尝试用#define欺骗intellisense。在我正在制作的任何库的头文件中的类声明中,我将整个私有部分包围在#ifdef空间中,例如
#ifdef MYCLASS_SHOW_PRIVATE_VARIABLES
private:
int hideThisVariable;
float noShow;
void HiddenIncrementFunction();
#endif
然后,在我需要为所有方法提供定义的类的代码部分中,在包含具有类声明的文件之前的顶部,我添加
#define MYCLASS_SHOW_PRIVATE_VARIABLES
这样,私有成员仅对您在源文件中为类实现的方法可见。使用此库的任何客户端都无法通过intellisense查看私有变量,除非他们碰巧定义了您的预处理器指令。