【问题标题】:How to create a Class inside of a namespace?如何在命名空间内创建一个类?
【发布时间】:2018-08-12 20:36:15
【问题描述】:

如果一个类定义在单独的命名空间中,它的结构必须是什么样的?

哪些部分属于头文件,哪些属于cpp文件?

我怎样才能使这个类只能通过这个特定的命名空间访问?

【问题讨论】:

  • 类的结构,以及类的访问方式,不会因为它在命名空间中而改变。类声明(在命名空间声明中)属于头文件。类实现属于 cpp 文件。命名空间不会改变这一点。

标签: c++ class header-files


【解决方案1】:

类名.h

#include <iostream>

namespace N {
    class classname {
    public:
        void classmethod();
    }
}

类名.cpp

#include "classname.h"

namespace N {
    void classname::classmethod() {
        std::cout << "classmethod" << std::endl;
    }
}

ma​​in.cpp

#include "classname.h"

int main() {
    N::classname a;
    classname b; // Error!

    a.classmethod();

    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 2012-09-02
    • 2017-09-13
    • 1970-01-01
    • 2020-06-04
    • 2012-06-25
    相关资源
    最近更新 更多