Я пытаюсь использовать std::unique_ptr
, чтобы открыть три разных типа файлов (.rdr
, .rrd
, .drr
), каждый из которых имеет базовый класс Reader
. Базовый класс, а также три класса читателей приведены ниже:
class Reader
{
protected:
vector<Read> _reads;
}
class Reader1 : public Reader
{
private:
int num;
};
class Reader2 : public Reader
{
private:
int num;
};
class Reader3 : public Reader
{
private:
int num;
};
Мне нужна помощь в реализации следующей функции:
static std::unique_ptr<Reader> create(const QString& file) {
// code here
}
Это моя попытка до сих пор :
static std::unique_ptr<Reader> create(const QString& file)
{
return std::unique_ptr<Reader> (create(file)); // gives the error 'all paths through this function will call itself'
}
Вот как я вызываю функцию:
if (tmp == "rdr") {
file = createTempFile();
auto readerfile = Reader::create(fileName);
Мне кажется, я не совсем понимаю, как работает unique_ptr
, возможно, поэтому я возникли проблемы с его реализацией.