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?
>Solution :
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.