我的代碼中的一個常見場景是我得到了一個函數,這個函數被層中的很多類使用。哪裏可以定義許多派生類使用的函子?
爲了讓所有類都可以訪問,並保持乾燥,我通常把它定義爲像我的基類的受保護的內部結構:
class Base
{
protected:
struct CommonFunctor
{
bool operator()()
{
return true;
}
};
};
class DerivedA : public Base
{
void FooA()
{
bool test = CommonFunctor()();
}
};
class DerivedB : public Base
{
void FooB()
{
bool test = CommonFunctor()();
}
};
我不喜歡這樣的解決方案,因爲它雜波我基地有很多小函子的類,它們只是內部的,即使它們不能被公衆訪問,也會降低我的基類的可讀性。
您是否知道該場景的其他解決方案?
它們在與其工作的類相同的命名空間中定義的問題是什麼? –
爲什麼不直接在類定義中聲明函子'operator()()'並在別處定義函數? – hmjd
@hmjd:這就是我所做的。我只爲我的代碼示例合併了定義和聲明。在我的基類頭文件中仍然有很多混亂...... – nabulke