我们可以像命名空间一样对类名进行别名吗?
例如:
namespace longname{ }
namespace ln = longname;// namespace aliasing
class LONGNAME {};
class LN = LONGNAME; // how to do class name aliasing, if allowed?
Run Code Online (Sandbox Code Playgroud)
Ale*_* C. 26
简单:
typedef LONGNAME LN;
Run Code Online (Sandbox Code Playgroud)
Typedef在C++中使用有点像"可以存储类型的变量".例:
class Car
{
public:
typedef std::vector<Wheel> WheelCollection;
WheelCollection wheels;
};
Run Code Online (Sandbox Code Playgroud)
通过Car::WheelCollection在任何地方使用而不是std::vector<Wheel>,您可以在一个地方更改容器类型,并让所有代码反映更改.这是抽象数据类型的C++方法(例如,在C#中,你有一个属性返回IEnumerable<Wheel>).
use*_*087 13
除了使用关键字提供的答案之外typedef,您还可以使用using自C++ 11以来的关键字.恕我直言,它在混叠方面看起来更加一致.
namespace longname{ }
namespace ln = longname;// namespace aliasing
class LONGNAME {};
using LN = LONGNAME; // "class aliasing"
Run Code Online (Sandbox Code Playgroud)
此外,using你可以别名模板类(如何的typedef模板类?通过使用)别名模板.
template<typename T> class LONGNAME {};
template<typename T> using LN = LONGNAME<T>; // alias template
Run Code Online (Sandbox Code Playgroud)
您可以使用typedef关键字:
typedef LONGNAME LN;
Run Code Online (Sandbox Code Playgroud)
你也可以这样做:
typedef class {
...
} LN;
Run Code Online (Sandbox Code Playgroud)
编辑: 虽然使用模板可能会遇到麻烦.请参阅此处了解可能的解决方案
| 归档时间: |
|
| 查看次数: |
12421 次 |
| 最近记录: |