Why using unique_ptr <string> items; instead of raw pointer string *items; throwing compilation error.
#include <iostream>
#include <memory>
using namespace std;
class myarray
{
private:
unique_ptr <string> items;
//string *items;
public:
myarray (int size=20) : items (new string [size] ) {}
string& operator[] (const int index)
{
return items[index];
}
};
int main()
{
myarray m1(200);
myarray m2;
m1[19] = "test";
cout << m1[19];
return 0;
}
Error:
subscript2.cpp: In member function ‘std::string& myarray::operator[](int)’:
subscript2.cpp:15: error: no match for ‘operator[]’ in ‘((myarray*)this)->myarray::items[index]’