我正在尝试将不同类型的值存储在一个列表中。现在我在this帖子中使用@ sbi的解决方案。所以我有基类:
class Variable
{
protected :
std::string name;
public :
Variable ( std::string name ) : name( name ) { }
virtual ~Variable () { }
virtual Print() const = 0;
};
源于它的类
template<typename T>
class TypedVariable : public Variable
{
protected :
const T* value;
public :
TypedVariable ( TString name, const T* value )
: Variable( name ),
value( value ) { };
T Value() { return *value; }
void Print() const
{
std::cout << "name: " << name << "\n";
std::cout << "value: " << *value << "\n";
}
};
然后我将Variable
存储在std::array
std::array<Variable*, size> myArray;
问题是我在这种情况下无法访问value
,因为它位于TypedVariable
内而不是Variable
。我的问题是,如果可能,我该如何访问该字段。