【问题标题】:Create my own pre-name like "std" in C++ [duplicate]在 C++ 中创建我自己的前名,如“std”[重复]
【发布时间】:2013-08-09 11:43:33
【问题描述】:

通常当有人创建他编写的控制台程序时

#include <iostream>
#include <stdlib.h>

int main(){
    std::cout<<"hello world"<<std::endl;
    system("pause");
}

必须包含std 才能调用coutendl 语句。

当我使用 .h.cpp 中的标头和代码创建库,然后包含该库时,我必须直接使用函数/类/结构/等的名称。我怎样才能做到,所以我必须为coutendl 使用std 之类的前置词?

【问题讨论】:

  • 它们被称为命名空间
  • 它被称为namespace
  • 哦,我也应该提一下:它们被称为命名空间。
  • @user2597243:如果你问这种问题(不知道名字),我认为你应该先阅读一本好的 C++ 入门书,然后再继续阅读。请咨询this SO list
  • 我已经更新了你的标题;这是std,而不是STD。 (C++ 区分大小写,所以很重要。)

标签: c++ namespaces


【解决方案1】:

它被称为命名空间

你可以像这样在命名空间中声明你自己的东西:

namespace mystuff
{
    int foo();
}

定义:

int mystuff::foo()
{
    return 42;
}

使用方法:

int bar = mystuff::foo();

或者,如果您不想完全限定所有内容,则可以像使用 std 一样导入命名空间:

using namespace mystuff;
// ...
int bar = foo();

【讨论】:

    【解决方案2】:

    你必须像这样定义命名空间

    namespace mynamespace {
        class A{
            int func(){
            }
        }
        void func2(){}
    }
    

    你可以像这样导入命名空间

    using namespace mynamespace;
    

    【讨论】:

      【解决方案3】:

      STD 前缀是一个命名空间。

      要定义/声明一个命名空间,您可以遵循该示例:

      namespace test
      { int f(); };
      

      f 属于 namspace 测试。 打电话给你可以

      test::f();
      
      or
      
      using namespace test;
       ....
       f();
      

      【讨论】:

        猜你喜欢
        • 2013-08-19
        • 2020-03-13
        • 2016-06-26
        • 1970-01-01
        • 2011-04-09
        • 1970-01-01
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        相关资源
        最近更新 更多