[英]Using typedef of template class in another class
我面臨以下挑戰。
我有一個模板類,它將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;
你要:
typedef typename AbstractSmth<T,a,b>::ABSTR_SMTH ABSTR_SMTH;
或C ++ 11方式:
using ABSTR_SMTH = typename AbstractSmth<T,a,b>::ABSTR_SMTH;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.