簡體   English   中英

模板類的前向聲明(訪客設計模式)

[英]Forward Declaration of Template Class (Visitor Design Pattern)

我試圖轉發聲明一個模板化的類A<T> ,以供類Visitor 就我的目的而言,聲明類Aint實例A<int>就足夠了。 我嘗試了兩種方法,但是都給出了不同的錯誤,並且我不知道如何進行。

這是我的錯誤的MWE:

namespace visitor{  
    class Visitor{
    public:
        virtual void visit(nsp::A<int>*) = 0;
    };    
}

namespace nsp{    
    template <class T>
    class A{
        A();
        T t_attribute;          
        void accept(visitor::Visitor*);
    };    

    void A<int>::accept(visitor::Visitor*){
        v -> visit(this);
    }        
}

int main(){
    return 0;
}

您可以嘗試在此處運行代碼以查看出現的錯誤:

error: specializing member 'nsp::A<int>::accept' requires 'template<>' syntax

感謝您的幫助。

我認為您在這里混合了一些東西,應該將accept方法聲明為:

template<class T>
void A<T>::accept(visitor::Visitor* v){
    v -> visit(this);
}

因為A類是模板。 然后,您可以專注於任何類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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