C++中的名称冲突

sud*_*03r 3 c++ g++ definition include

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


#include <iostream>

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

random r1 ;

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

当我尝试编译此代码时,我得到错误
error: ârandomâ does not name a type.
当我为类使用一些不同的名称时,代码工作正常.
似乎random是在其他地方定义的(虽然编译器消息不是很有用).

我的问题是如何确保我使用的名称不会与包含文件中使用的名称冲突.我尝试过使用命名空间,但这会在调用时导致模糊不清.任何见解?
[编辑]
我使用名称空间作为using namespace myNSpace
但当我使用它,因为use myNSpace::random它工作正常.

kar*_*rts 8

使用命名空间

namespace myNamespace
{

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

}

myNamespace::random r1;
Run Code Online (Sandbox Code Playgroud)

  • 我只能想象`使用myNamespace;模糊性错误; static random r1;`. (3认同)

War*_*ung 5

你正在进入POSIX random()功能.

你如何避免碰撞?了解你的图书馆.或者你可以像我一样做诊断,比如说man random.那是随机的(3).

我不知道你的命名空间问题是什么,但它听起来像一个单独的问题.