簡體   English   中英

在另一個類中使用模板類的typedef

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM