Я пытаюсь использовать push_back
как часть функции-члена в классе StrBlobm
для добавления элементов к вектору в общем указателе, также содержащемся в StrBlobm
, но я получаю эту ошибку:
Исключение: нарушение прав на чтение.
std :: _ Vector_alloc, std :: allocator>, std :: allocator, std :: allocator>>>> :: _ Myend (...) вернул 0xC. произошло
У меня похожие проблемы с использованием итераторов для печати из вектора внутри общего указателя. В чем причина этого нарушения и как я могу это исправить?
#include <memory>
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
#include <initializer_list>
class StrBlobm {
public:
StrBlobm() = default;
StrBlobm(std::initializer_list<std::string> il) :
mydata(std::make_shared<std::vector<std::string>>(il)) {};
void add(std::string& a)
{
mydata->push_back(a);
}
private:
std::shared_ptr<std::vector<std::string>> mydata;
};
int main()
{
StrBlobm myblob;
std::ifstream is;
is.open("somefilepathtotxtdocument.txt");
while(is)
{
std::string mystr;
std::getline(is, mystr);
myblob.add(mystr);
}
is.close();
return 0;
}