在C++中的命名空间中使用函数名?

ste*_*efv 0 c++

我想在命名空间系统中创建一个类Console.我这样定义了这个类:

宣言

#pragma once
namespace system
{
    class Console
    {
       public:
          ~Console();
          void static writeLine();
       private:
          Console();
    };
}
Run Code Online (Sandbox Code Playgroud)

定义

#include "Console.h"
#include <iostream>

system::Console::Console() {}
system::Console::~Console() {}
void system::Console::writeLine() {
    std::cout << "test" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

但编译器拒绝定义此类,因为系统已在stdlib.h中定义(包含在iostream中).

我是否有解决方案强制编译器"忽略"系统的第一个定义?

谢谢.

燕姿

use*_*670 5

上层命名空间名称应该是合理唯一的(而不是通用的),不仅与标准库冲突,而且还与其余的库冲突.所以只需将命名空间system放入另一个命名空间或将其重命名为

namespace stefv::system
{
Run Code Online (Sandbox Code Playgroud)

此外,您可能希望使用某种特定于命名空间名称的前缀.例如ns_stefv::ns_system.