我们能像在命名空间中那样给类名起别名吗?
例如:
namespace longname{ }
namespace ln = longname;// namespace aliasing
class LONGNAME {};
class LN = LONGNAME; // how to do class name aliasing, if allowed?发布于 2012-03-21 00:50:03
简单:
typedef LONGNAME LN;Typedefs在C++中的使用有点像“可以存储类型的变量”。示例:
class Car
{
public:
typedef std::vector<Wheel> WheelCollection;
WheelCollection wheels;
};通过使用Car::WheelCollection everywhere代替std::vector<Wheel>,您可以在一个地方更改容器类型,并让您的所有代码反映这些更改。这是抽象数据类型的C++方式(例如,在C#中,你会有一个返回IEnumerable<Wheel>的属性)。
发布于 2017-03-16 19:06:06
除了已经使用关键字typedef提供的答案之外,您还可以使用关键字using more C++11。我希望它在别名方面看起来更一致。
namespace longname{ }
namespace ln = longname;// namespace aliasing
class LONGNAME {};
using LN = LONGNAME; // "class aliasing"此外,在using中,您可以使用alias templates为模板类(How to typedef a template class?)设置别名。
template<typename T> class LONGNAME {};
template<typename T> using LN = LONGNAME<T>; // alias template发布于 2012-03-21 00:51:35
您可以使用typedef关键字:
typedef LONGNAME LN;您还可以执行以下操作:
typedef class {
...
} LN;编辑:使用模板时,您可能会遇到麻烦。有关可能的解决方案,请参阅here。
https://stackoverflow.com/questions/9791239
复制相似问题