簡體   English   中英

如何在CRTP中使參數化Base成為Derived的朋友?

[英]How to make parameterized Base a friend of Derived in CRTP?

我想在參數化Base上實現CRTP,並讓Base成為Derived的朋友:

template <template <typename> class Derived, class T>
class Base;

template <class T>
class Derived : public Base<Derived, T>
{
  friend class Base<Derived, T>;
};

我在VS2012上出現編譯錯誤,並顯示以下消息:

error C3200: 'Derived<T>' : invalid template argument for template parameter 'Derived', expected a class template

謝謝你的幫助。

嘗試這個:

friend class Base<::Derived, T>;

如果這不起作用,則您的編譯器不支持這種形式的友情聲明(應該,但是我知道什么),並且您必須通過將友誼擴展到所有基本實例來解決。

template <template <typename> class D, class BT>
friend class Base;

暫無
暫無

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

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