gpt4 book ai didi

c++ - 无法与 typedef 成为 friend : any particular reason?

转载 作者:可可西里 更新时间:2023-11-01 16:03:07 26 4
gpt4 key购买 nike

struct A {};
typedef A B;

struct C { friend struct B; };

GCC 4.7.0 20110427 告诉我 error: using typedef-name 'B' after 'struct' .

到目前为止,这似乎是不言自明的;毕竟,我的示例代码试图声明并加好友 struct称为 B,实际上不是 struct-key .

但是,我必须写friend struct A;如果A实际上是一个复杂的、冗长的模板元黑客,这是不可取的。

我是不是遗漏了什么,或者我们实际上可以 friend通过类型别名类型?如果不是,是否有任何特殊原因或者只是语言的怪癖?


This question之前提出过这个问题,但是已经过时了,并且就 C++0x 的问题做出了似乎不正确的断言。 这个问题是关于 C++0x FDIS 的。

最佳答案

你可以友好任意类型(对于非类类型,友好声明将被忽略),但是你应该省略 struct:

struct A {};
typedef A B;

struct C {
friend B; // equivalent: friend struct A;
// equivalent: friend A;

friend int; // ignored
};

关于c++ - 无法与 typedef 成为 friend : any particular reason?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993880/

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