泛型編程我有這樣的代碼:與多態性與通用矢量
struct All { public: All() {} ~All() {} };
template <typename T>
struct any : public All
{
public:
any() : All() {}
~any() {}
T value;
};
int main()
{
any<int>* a = new any<int>;
a->value = 55;
any<string>* b = new any<string>;
b->value = "Hello World !";
vector<All*> vec;
vec.push_back(a);
vec.push_back(b);
for (int i = 0; i < (int)vec.size(); i++) {
All* tmp = vec[i];
cout << tmp->value << endl; // Error appears here
}
return 0;
}
與以下錯誤:
struct 'All' has no member named 'value'
而且我不知道如何避免這個錯誤。看來在for循環中tmp
是一個All對象,並且所有對象都沒有成員命名值。 他們沒有辦法從All對象tmp
中訪問子結構體(any
)的成員變量以避免此問題並擁有完整的常規向量?
您可以給'All'和'任何'添加一個'print'虛擬函數,然後調用它。 –
immibis