以下代码编译正常并按预期运行:
#include <iostream>
namespace
{
struct Base
{
void print() const { std::cout << "test"; };
};
};
class Derived : public Base
{
};
int main()
{
Derived d;
d.print();
return 0;
}
但是在运行时使用QuickWatch查看d时,IntelliSense似乎无法找到 基
我通过将Base放在一个命名的命名空间而不是一个未命名的命名空间来解决这个问题。
这是Visual Studio中的一个错误,还是我错过了什么?
答案 0 :(得分:4)
匿名域空间的这个问题在VC ++中已经存在一段时间了 - 请参阅http://msdn.microsoft.com/en-us/library/0888kc6a%28VS.80%29.aspx。来自链接的文档:
本机C ++表达式计算器不支持匿名名称空间。
和
在此示例中观看符号测试的唯一方法是使用装饰名称:
e.g。 (int*)?test@?A0xccd06570@mars@@3HA
(使用示例中给出的命名空间层次结构来说明这一点)。只需使用装饰名称?那太方便了!谢谢,微软。