【发布时间】:2012-02-27 02:31:00
【问题描述】:
给定以下代码:
class Named {
class /*Unnamed*/ {
void Function();
} un;
};
// Implement Named::Unnamed::Function here
int main() {
Named named;
named.un.Function();
}
有没有什么方法可以实现 Named::Unnamed::Function 而无需命名 Unnamed 或将函数的定义嵌入到 Named 的定义中?
我猜答案是“否”,但 GCC 给了我有用的消息“未定义对 `Named::{unnamed type#2}::Function()' 的引用,我想到可能有一些疯狂的可能语法。
【问题讨论】:
-
不会有“一些疯狂的语法”。显然,编译器将为每个实体分配某种名称,但这些名称是不可知的或不可用的。我想说一个外线定义需要一个函数的名称(构造函数除外),并且由于您无法命名该函数,因此您不能对其进行外线定义。
-
@whitelion:我没有,但这与问题无关。是的,确实有很多方法可以解决这个问题 - 我的意思是,一个明显的方法就是命名类 - 我只是好奇是否有办法避免解决方法。
标签: c++