考慮下面的代碼中定義的函數:C++:實現匿名結構
class Named {
class /*Unnamed*/ {
void Function();
} un;
};
// Implement Named::Unnamed::Function here
int main() {
Named named;
named.un.Function();
}
有什麼辦法來實現命名::無名::功能,無需任何命名尚未命名或定義中嵌入函數的定義命名?
我猜答案是「否」,但GCC給了我有用的消息「未定義的引用到'命名:: {未命名類型#2} :: Function()',它發生在我身上可能有有一些瘋狂的可能語法
您是否看到http://stackoverflow.com/questions/991062/passing-unnamed-classes-through-functions? – whitelionV 2012-02-05 01:31:21
不會有「一些瘋狂的語法」。顯然,編譯器會爲每個實體分配一些名稱,但這些名稱是不可知或不可用的。我想說一個特別的定義需要一個函數的名字(除了構造函數),並且由於你不能命名這個函數,所以你不能對它進行特別的定義。 – 2012-02-05 01:39:03
@whitelion:我沒有,但這與問題無關。是的,在這個問題上肯定有很多方法可以解決問題 - 我的意思是,最明顯的一個就是命名該類 - 我只是好奇是否有辦法避免這種解決方法。 – ZorbaTHut 2012-02-05 01:40:04