C++ 向别名命名空间添加项
我使用名称空间在数据库实现的不同版本之间切换。我的客户机代码不需要知道详细信息,因此我使用名称空间别名对客户机代码隐藏特定版本 db_v1.h db_def.h 现在,如果我想用非版本特定的附加项扩展名称空间,我想将它们添加到名称空间C++ 向别名命名空间添加项,c++,namespaces,C++,Namespaces,我使用名称空间在数据库实现的不同版本之间切换。我的客户机代码不需要知道详细信息,因此我使用名称空间别名对客户机代码隐藏特定版本 db_v1.h db_def.h 现在,如果我想用非版本特定的附加项扩展名称空间,我想将它们添加到名称空间db,但问题是我不能使用名称空间db,因为它是一个别名 db_global.h 也许吧 在db_def.h中,而不是namespace db=db_v1?这样,db_v1的所有内容都导入到db命名空间中。显然,它可以有条件地编译: namespace db { #i
db
,但问题是我不能使用名称空间db
,因为它是一个别名
db_global.h
也许吧
在db_def.h
中,而不是namespace db=db_v1代码>?这样,db_v1
的所有内容都导入到db
命名空间中。显然,它可以有条件地编译:
namespace db {
#ifdef _DB_V1
using namespace db_v1;
#elif defined _DB_V2
using namespace db_v2;
#endif
}
例如,此代码运行良好:
namespace db_v1 {
void foo(){}
}
namespace db_v2 {
void foo(){}
}
namespace db {
using namespace db_v1;
}
namespace db {
typedef enum
{
OK
} value;
}
我认为这不是一个好方法。。。名称空间用于避免名称冲突,但您可能需要处理继承和多态性,保持相同的名称空间。。。让基类设置所有基本功能并让派生类定义准确的行为有什么问题!太简单了!是的,我正在考虑如何使用使用,但我的想法是错误的,因为我对别名的设定太高了。:)谢谢
namespace db <-- should be using the namespace for the current version
{
typedef enum
{
OK
} value;
}
x = db::value::OK;
#ifdef _DB_V1
#include "db_v1.h"
#endif
namespace db {
using namespace db_v1;
}
namespace db {
#ifdef _DB_V1
using namespace db_v1;
#elif defined _DB_V2
using namespace db_v2;
#endif
}
namespace db_v1 {
void foo(){}
}
namespace db_v2 {
void foo(){}
}
namespace db {
using namespace db_v1;
}
namespace db {
typedef enum
{
OK
} value;
}