首页 > 解决方案 > 您可以在 C++ 中为方法名称起别名吗?

问题描述

考虑我有一些简单的课程:

template<typename T>
class Vector {
public:
    T first() const { return this->m_first; }
    T second() const { return this->m_second; }
private:
    T m_first;
    T m_second;
}

现在我想在其中一些背后创造一些意义:

typedef Vector<int> Position;
typedef Vector<unsigned int> Dimension;

我还可以为新类型 Position 和 Dimension 的方法创建别名,以便对于 Position,x() 引用 frist(),y() 引用 second(),而对于 Dimension,width() 引用 first(),height()引用第二()。

或者更“快速”:拥有第一个和第二个公共,为成员变量创建别名?实际用例更复杂,但这应该显示我想要的:两个在内存中非常相似,但根据上下文调用完全不同的东西。

标签: c++oop

解决方案


您可以通过执行以下操作来实现您想要的:

class Position : private Vector<int> {  
  public:
    auto x() const { return first(); }
    auto y() const { return second(); }
};

class Dimension : private Vector<unsigned int> {  
  public:
    auto width() const { return first(); }
    auto height() const { return second(); }
};

它创建了从 的特定实例继承的新类型Vector,并使用可公开访问的有意义的名称调用私有继承的成员函数。

这是一个演示


推荐阅读