簡體   English   中英

如何獲得此模板類進行編譯?

[英]How to get this template class to compile?

抱歉,我無法提出一個可以正確解決我的問題的問題。 我的問題是這個。

我有這樣的模板化類。 我不明白如何准確定義Get函數。

template<class Data>
class Class
{
    struct S
    {
    };
    void Do();
    S Get();
};

template<class Data>
void Class<Data>::Do()
{
}

template<class Data>
Class<Data>::S Class<Data>::Get()
{
}

我收到以下錯誤

1>error C2143: syntax error : missing ';' before 'Class<Data>::Get'
1>error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>fatal error C1903: unable to recover from previous error(s); stopping compilation
template<class Data>
Class<Data>::S Class<Data>::Get()

需要是

template<class Data>
typename Class<Data>::S Class<Data>::Get()

因為S是從屬類型。 每當您將某個類型嵌套在模板中時,都需要使用關鍵字typename 例如,在vector<int>上的typename vector<int>::iterator的類型類型為typename vector<int>::iterator

C ++ 11樣式,更易於閱讀和編寫:

template<class Data>
auto Class<Data>::Get() -> S {
    return {};
}

暫無
暫無

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

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