为什么Visual Studio的智能感知显示私有成员和功能?
Why does Visual Studio's intellisense show private members and functions?
在Visual Studio中使用本机c++时,即使在包含类的范围之外,intellisense也会显示私有成员和函数。这使得很难为我编写的类创建干净的API。
这是有原因的吗?这是可以预防的吗?
为什么不同时显示私有的呢?毕竟,他们是成员,他们是存在的,与其他成员一样,他们可以从特定的环境中完全接触到。
IntelliSense很难确定成员是否可以从这个特定的上下文中访问,特别是如果你考虑到在大多数情况下这个上下文还不完整(用户仍在键入),这意味着通常不可能对其进行分析。
事实上,我不知道是否或如何预防
但据我所知,他们有一个带锁的图标,所以你知道他们是私人的。也许这有助于
不幸的是,这只适用于您制作的任何东西,但如果您使用大量自己的库,仍然需要记住这一点。
对于我制作的任何库,我都做了一件事,那就是试图用#define欺骗intellisense。在我正在制作的任何库的头文件中的类声明中,我将整个私有部分包围在#ifdef空间中,例如
#ifdef MYCLASS_SHOW_PRIVATE_VARIABLES
private:
int hideThisVariable;
float noShow;
void HiddenIncrementFunction();
#endif
然后,在类的代码部分,我需要为所有方法提供定义,在包括带有类声明的文件之前,在顶部添加
#define MYCLASS_SHOW_PRIVATE_VARIABLES
这样,私有成员只对源文件中为类实现的方法可见。任何使用此库的客户端都无法通过intellisense查看私有变量,当然,除非它们碰巧定义了您的预处理器指令。
相关文章:
- 类模板的成员功能的定义在单独的TU中完全专业化
- 升压信号2将插槽传递到成员功能以断开连接
- 多次实现成员功能
- 私有成员数据不可用于公共成员功能
- 如何避免大多数成员功能相同的代码重复
- C 成员功能
- =删除用户定义的成员功能,除了构造函数,分配运算符C 11
- C 朋友课程和朋友成员功能
- C 函数调用包装器包含类成员功能作为模板参数
- 创建类成员功能
- 成员功能C 的不同实现
- 返回类型不可知模板类成员功能
- C 11螺纹 - 非静态成员功能的使用无效 - 工作GCC 5.1.0损坏的GCC 7.3.1
- 超载类成员功能标记为const
- C 功能指针和成员功能指针
- 将非静态成员函数C 的使用无效,而将成员功能作为函数变量
- 我可以使用Priority_queue的基础容器的成员功能
- 如何子类可运行任何成员功能
- 共享类时如何隐藏成员功能文件
- 从C文件访问C 类成员功能