Можно ли добиться чего-то подобного? Вместо того, чтобы иметь разные функции, которые создают экземпляры разных классов, было бы неплохо, если бы можно было написать одну единственную функцию, которая могла бы создавать разные классы, если они получены из базового класса и принимают те же аргументы.C++ экземпляр класса через шаблон
#include <iostream>
#include <string>
#include <vector>
#include <limits>
class Base
{
void DoSomething()
{
std::cout << "Oh yes" << std::endl;
}
};
class Derived1 : public Base
{
};
class Derived2 : public Base
{
};
template <typename T>
T* Create<T>()
{
return new T;
}
int main()
{
auto* test = Create<Derived1>();
test->DoSomething();
delete test;
std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
return 0;
}
Это должно работать. В чем дело? –
Исправьте свой синтаксис как 'template T * Create()' –
И сделайте свой 'Base :: DoSomething'' public' – vsoftco