首页 > 解决方案 > 类 typedef 在类之外定义

问题描述

我正在编写一个C具有内部类的类T,我希望将Thidden 的详细信息作为C. 中的方法C都使用指向T. 这当然是可能的:

// In header
class C {
public:
  class T;
  T* f();
  void g(T*);
};

// In .cpp
class C::T { /* details here */ };

现在我的问题是,如何在文件C::T中定义另一个类型别名。.cpp以下内容根本无法编译,但它说明了我想要做的事情:

// Outside the class C
using C::T = std::string;

是否有任何解决方法,同时保持目标,即隐藏细节C::T

标签: c++c++11

解决方案


最接近这一点的方法是让您的 t 从字符串派生:

class C::T : public std::string { ... };

推荐阅读