gpt4 book ai didi

C++ namespace 作为模块?

转载 作者:太空狗 更新时间:2023-10-29 21:27:16 24 4
gpt4 key购买 nike

以前,我会这样写类:

// my_class.h

class MyClass
{
public:
// Signals emitted by MyClass objects.
typedef boost::signal<..> SignalA;
typedef boost::signal<..> SignalB;

enum SomeEnum
{
..
};

enum AnotherEnum
{
..
};

typedef some_type SomeOtherType;

// an exception thrown by MyClass objects
class ExceptionA
{
..
};

MyClass();

// rest of class definition omitted
};

我一直讨厌这种风格的一点是它使类声明变得复杂。因此,对于最近的一个项目,我决定尝试一些新的东西。我决定以类似于 Python 中模块的方式使用 namespace (我们在工作中也经常使用 Python):

// my_class.h

namespace my_class
{
// Signals emitted by MyClass objects.
typedef boost::signal<..> SignalA;
typedef boost::signal<..> SignalB;

enum SomeEnum
{
..
};

enum AnotherEnum
{
..
};

typedef some_type SomeOtherType;

// an exception thrown by MyClass objects
class ExceptionA
{
..
};

class MyClass
{
public:
MyClass();
..
};
}

结果还不错。唯一的缺点是您总是必须在所有内容之前加上前缀“my_class::”。但这可以通过使用“using”语句来缓解。

我正准备开始另一个项目,我正在考虑再次这样做。采用命名空间的这种用法是否有任何严重的缺点(除了增加冗长之外)?

最佳答案

除了名称 my_class 之外,应该没问题。事实上,这就是命名空间的目的。

关于C++ namespace 作为模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com