c++ - 在另一个类中使用模板类的 typedef

标签 c++ templates

我遇到了以下挑战。

我有一个模板类将 boost shared_ptr 定义为一种类型。

template<typename T, int a, int b>
class AbstractSmth{

public:

typedef boost::shared_ptr< AbstractSmth > ABSTR_SMTH;

...
};

还有一个模板类,我想在其中使用该类型。我知道以下语法有效。

template<typename T, int a, int b>
class AbstractOtherThing{

public:

    typename AbstractSmth<T,a,b>::ABSTR_SMTH p_smth;

    void myFancyFunction(typename AbstractSmoother<T,a, b>::ABSTR_SMTH baz){
    ...
}

};

是否可以将该类型用作该类中的 typedef?也许是这样的:

template<typename T, int a, int b>
class AbstractOtherThing{

public:

    using typename AbstractSmth<T,a,b>::ABSTR_SMTH;

    ABSTR_SMTH p_smth;

    void myFancyFunction(ABSTR_SMTH baz){
    ...
}

};

致以最诚挚的问候,新年快乐!

最佳答案

当然。

守旧派:

typedef typename AbstractSmth<T,a,b>::ABSTR_SMTH ABSTR_SMTH;

C++11:

using ABSTR_SMTH = typename AbstractSmth<T,a,b>::ABSTR_SMTH;

关于c++ - 在另一个类中使用模板类的 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20996606/

相关文章:

c++ - 编码是否影响 strstr() (及相关函数)的结果

c++ - constexpr 标准仿函数的正确用法是什么?

c++ - 将成员函数指针传递到模板中

C++ - 使用默认模板作为特化的基础

javascript - 为什么监听器总是显示最后一次迭代的次数?

c++ - 如何使用 DJGPP 在 DOS 下的 C++ 程序中启用鼠标?

c++ - 将 WCHAR 用作 CHAR?

C++ 缺少输入(需要打印出 test1 的值)

php - 在 Codeigniter 中加载 javascript

c++ - 从带有迭代器参数的模板函数返回指针