假設您需要通過類文字或通過該類的繼承對象來訪問結構/類的成員。它可能看起來是這樣的:多態:通過類文字或對象訪問靜態成員
struct Component {
static const long key = 0;
virtual long getKey() {return key;};
};
struct FooComponent : Component {
static const long key = 0x1;
virtual long getKey() {return key;};
};
struct BarComponent : Component {
static const long key = 0x2;
virtual long getKey() {return key;};
};
通過上述,key
可以訪問或者通過:
long key = FooComponent::key;
或
FooComponent foo;
long key = foo.getKey();
現在我的問題是:是否有一些清潔劑,減少多餘的方式來達到上述目的?理想情況下,virtual long getKey() {return key;};
只需要指定一次,而不是每個繼承類。
編輯:
類層次結構是重要。該組件存儲在一個容器中,在我的情況下,unordered_map:
std::unordered_map<long, std::unique_ptr<Component>> components;
'模板結構組件{長信息getKey(){返回鍵; }}; struct FooComponent:Component <0x1> {};' –
@IgorTandetnik對不起,我寫了我的答案,然後我看到了您的評論。 – iavr