无法与typedefs交朋友:任何特殊原因
Not able to befriend typedefs: any particular reason?
struct A {};
typedef A B;
struct C { friend struct B; };
GCC 4.7.0 20110427告诉我error: using typedef-name 'B' after 'struct'
.
到目前为止,这似乎是不言自明的;毕竟,我的示例代码试图声明和好友一个名为 B 的struct
,这实际上不是struct-key
。
但是,我必须写friend struct A;
,如果A
实际上是一个复杂的、冗长的模板元黑客混乱,这是不可取的。
我是否遗漏了什么,或者我们实际上不能通过类型别名friend
类型?如果没有,是否有任何特殊原因,或者只是语言的怪癖?
这个问题
之前提出了这个问题,但已经过时了,并就 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++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何在不产生任何垃圾的情况下获得C中的像素
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 编译要在英特尔Hyperscan中使用的.cc文件时出现问题
- C++映射有2个键,这样任何1个键都可以用来获取值
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- RtlCaptureStackBackTrace未捕获任何帧
- 链表c++插入,所有情况都已检查,但没有任何工作
- C++模板函数,用于比较任何无符号整数和有符号整数
- 将gsl c++程序与"英特尔MKL"链接
- Arduino millis() - millis() 怎么能等于 0 以外的任何东西?
- 尝试摆脱任何堆内存分配
- 是否有任何C++功能可以对地图进行排序?
- 打印时有二叉树问题.用户输入不打印任何内容
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 在C++行尾写一个分号或多个分号是否会改变任何内容
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- GLSL 着色器在英特尔的集成 GPU 上运行完美,但在 NVIDIA 上没有任何运行
- 无法与typedefs交朋友:任何特殊原因