c++ - C++ 中的名称冲突

标签 c++ include g++ definition

在编写一些代码时,我遇到了这个问题:


#include <iostream><p></p>

<p>class random
{
 public:
 random(){ std::cout << "yay!! i am called \n" ;}
};</p>

<p>random r1 ;</p>

<p>int main()
{
 std::cout << "entry!!\n" ;
 static random r2;
 std::cout << "done!!\n" ;
 return 0 ;
}
</p>

当我尝试编译这段代码时出现错误
错误:“random”没有命名类型。
当我为类使用一些不同的名称时,代码工作正常。
似乎 random 是在其他地方定义的(尽管编译器消息不是很有用)。

我的问题是如何确保我使用的名称不会与包含文件中使用的名称冲突。我曾尝试使用 namespace ,但这会导致调用时出现歧义。 有什么见解吗?
[编辑]
我使用 namespace 作为 using namespace myNSpace
但是当我将它用作 use myNSpace::random 时,它工作正常。

最佳答案

使用命名空间

namespace myNamespace
{

    class random
    {
    public:
        random(){ std::cout << "yay!! i am called \n" ;}
    };

}

myNamespace::random r1;

关于c++ - C++ 中的名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1847822/

相关文章:

java - 返回在各种语言的函数中创建的数组和对象

c++ - 在递归函数中更有效地创建对象和对象数组? C++

c++ - 我如何在不放置 '#include' 语句的情况下访问 cpp 标准库?

php - 在 PHP 中包含问题

c++ - Cygwin gcc c++ c99 库错误 stod 无法识别,使用 strtod 代替

opengl - G++。无法链接库

c++ - 返回 (\r) 中断 cout

c++ - 将 Cimg 转换为 ITK

android - xml - 多次包含相同的布局不起作用

c++ - 编译器为 Project Euler #22 给出了不同的答案