Не компилируется код. Работа с файлами последовательного доступа

Пишет, что ошибка в строке "base obj("1.txt", "13y45");" и подчёркивает "1.txt", не понимаю в чём ошибка

#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
using namespace std;

template <class T>
class base
{
private:
    ofstream *file;
    T *str;
    int size;
public:
    base(string filename, T *str1)
    {
        file = new ofstream(filename.c_str());

        size = strlen(str1);
        str = new T[size + 1];
        strcpy_s(str, size + 1, str1);
    }
    ~base()
    {
        file->close();
        delete[]str;
    }
    base& operator [](char index)
    {

        (*file) << str[index] << endl;
        return *this;
    }
};

int main()
{
    base<char> obj("1.txt", "13y45");
    char ggg = 4;
    obj[ggg];

    ifstream f;
    char *p = new char[100];
    f.open("1.txt");
    if (f.fail() == 1) cout << " File not open" << endl;
    else
    {
        f.getline(p, 99);
        cout << "\t\tThe symbol is: " << p << endl;
    }
    f.close();
    delete[]p;
    system("pause");
    return 0;
}

Ответы (1 шт):

Автор решения: KoVadim

Дело в том, что "13y45" имеет тип const char*, а конструктор принимает char*. Так в с++ нельзя, хотя раньше в студии так и можно было делать. Просто поправьте конструктор на такой base(string filename, const T *str1) и все будет работать.

Этот код был взят с книжки 2000 годов? или лекции старенького преподавателя?

→ Ссылка