我遇到了以下挑战。
我有一个模板类将 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/