我在C++函數中看到了一些內部結構的用法。在C++函數中使用本地類
有一個通用接口IBase。這是草稿的代碼。
class IBase
{
virtual Method()=0;
}
vector<IBase*> baseList;
然後一個函數定義一個基於該IBase的內部類,然後將內部類對象推入到baseList中。
void func()
{
struct Object : public IBase
{
virtual Method()
{
// Method of Object in func
}
}
IBase* base = new Object();
baseList->push(base);
}
這似乎是一個奇怪的用法,但是很好的實現了消息/事件創建模式。
其他線程可能會使用此baseList來處理傳入事件。
「struct Object」的內部結構的範圍是什麼?這很有趣。有一些文件在談論這個嗎?
*他們無法訪問非靜態局部變量。那意味着覆蓋虛擬函數不能訪問局部變量? – giggle 2011-04-19 10:11:29
@giggle:不是直接的,但是你可以將它們作爲參數傳遞給構造函數,這樣'virtual'函數就可以使用它們。 – Nawaz 2011-04-19 10:14:12
@giggle:只是澄清 - 覆蓋虛擬函數當然可以聲明和訪問它自己的本地變量。 Nawaz表示'func()'的局部變量。 – TonyK 2011-04-19 10:20:58