gpt4 book ai didi

c++ - 在模板中使用 friend

转载 作者:IT老高 更新时间:2023-10-28 23:13:53 25 4
gpt4 key购买 nike

我正在写一个小类,该类基本上是C类的工厂,但我希望其他类能够访问其中的一些方法。

template<class C>
class CFactory {
public:
friend class C;
};

这应该使 CFactory 的字段可用于 C 类,但编译器不这样认为。

我在 Mac 上使用 gcc 时遇到以下两个错误。

error: using template type parameter 'C' after 'class'

error: friend declaration does not name a class or function

谁能告诉我我做错了什么以及如何改正?

最佳答案

不幸的是,据我了解,当前标准不允许这样做。
§7.1.5.3/2 说:

[Note: ... within a class template with a template type-parameter T, the declaration
friend class T;
is ill-formed. -end note]

在相关的说明中,这个限制似乎在 C++0x 中被删除了(N3290 中的第 11.3/3 节)。
顺便说一句,如果我们简单地编写 friend T;MSVC 可能会允许这样做。

关于c++ - 在模板中使用 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6321191/

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