For example I have some base type Any
template<typename T>
class Any
{
public:
T data;
Any(T data) { this->data = data; }
// some other function signatures using data
};
class Number : public Any<int>
{
// functions defining all functions like substracting etc.
};
And more classes deriving Any
Now in main function I want to create an array of Any
int main()
{
Any types[2] { Number(1), Number(3) }; // doesnt work
}
Is there another way of doing this?
Let's say you have:
class A : public Any<int> { };
class B : public Any<std::string> { };
class C : public Any<double> { };
Objects of type A
, B
, and C
are not subclasses of Any
because Any
is a template. Rather they are subclasses of Any<int>
, Any<std::string>
and Any<double>
, respectively and as such do not share a common parent class.
You may wish to read up on std::variant.