在指定命名空间后通过指针内联声明对象
Declaring object via pointer inline after specyfing namespace
当我输入:
Cat *cat = new Cat();
并将"using namespace namespace;"放在顶部,就可以了。但是,如果我这样做:
Namespace :: Cat *cat = new Cat();
它不工作。如果有人能解释一下,我会很感激的。
简短回答
如果你不写using namespace Namespace
,你需要在中指定每一个出现的名称Cat
。
Namespace::Cat *cat = new Namespace::Cat();
解释当你写Cat
没有命名空间规范编译器搜索Cat
在当前范围和命名空间,在这种情况下,Cat
是在一个不同的命名空间,所以它不能被发现,除非你告诉编译器通过添加using namespace Namespace;
来查看该命名空间。
您拥有的另一个选项是通过在每次出现类型Namespace::Cat
之前编写名称空间来始终限定其名称。这样编译器就知道去哪里找了。
第二种方法通常被认为更好,因为名称冲突的可能性更小。
关于编译器如何搜索名称的详细信息,请参见名称查找。
相关文章:
- 类的静态结构指针声明在C++
- 函数指针声明
- 指针声明
- 使用无效指针初始化指针声明符的行为是否未定义?
- 如何将指针声明以在类初始化器中的成员功能并拨打这些指针
- 指针声明和间接寻址之间的区别
- 是否可以将“自动”关键字用作函数指针声明中使用初始化的返回类型
- 与使用指针声明的字符串和C 中的数组相混淆
- 如何在C 中使用不同数据类型的类模板指针声明指针
- 指向STD :: vector,指针声明
- 为什么我们不能泛化指针声明?
- C 返回类型指针声明
- 将结构指针声明为函数的返回类型
- C++ h 和 cpp 文件中的指针声明冲突
- 为什么或何时用指针声明int
- 如何将函数指针声明指向模板函数,其返回类型取决于模板类
- 如何将方法指针声明为Typedef方法参数
- 通过参考或指针声明属性C
- C 指针声明
- 指针声明基础(多维数组指针的赋值)