Не компилируется код. Работа с файлами последовательного доступа
Пишет, что ошибка в строке "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 годов? или лекции старенького преподавателя?