为什么Visual Studio的intellisense显示私有成员和函数?

时间:2011-06-18 00:16:30

标签: c++ visual-studio-2010

在Visual Studio中使用本机c ++时,即使在包含类的范围之外,intellisense也会显示私有成员和函数。这使我很难为我编写的类创建干净的API。

这有什么理由吗?这可以预防吗?

3 个答案:

答案 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查看私有变量,除非他们碰巧定义了您的预处理器指令。