gpt4 book ai didi

c++ - CRTP中如何使参数化Base成为Derived的友元?

转载 作者:行者123 更新时间:2023-11-28 02:37:50 28 4
gpt4 key购买 nike

我想在参数化的 Base 上实现 CRTP,并使 Base 成为 Derived 的 friend :

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>;

如果这不起作用,则说明您的编译器不支持这种形式的友元声明(应该支持,但我怎么知道),您将不得不通过将友元关系扩展到所有 Base 实例来解决。

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

关于c++ - CRTP中如何使参数化Base成为Derived的友元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26928331/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com