Я уже нашел несколько тем на этом форуме, обсуждая о недопустимой копии объектов потока, но я не уверен (по крайней мере, я не думаю, что так) это мое дело.Определение потока как переменной частного класса, похоже, работает под Linux, но не под Windows Visual Studio
Я хочу определить поток как приватную переменную данного класса. Я уже делал это в прошлом для приложения, написанного под Ubuntu, что-то вроде
class of_driving{
public:
of_driving();
~of_driving();
// ... Some public stuff ...
private:
// ... Some private stuff ...
std::ofstream J_f;
};
, и это сработало легко. Теперь я пытаюсь сделать в принципе то же самое для другого приложения, но я работаю на Visual Studio под Windows:
class FTSensor{
public:
FTSensor();
~FTSensor();
private:
std::stringstream ftMeasurementSS;
};
Однако, когда я построить решение, я получил следующее сообщение об ошибке:
Errore 2 error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>' D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sstream 724
Может ли кто-нибудь объяснить мне такое поведение? Я подчеркнул, что я работал над разными ОС только потому, что для меня это единственное различие, но я также ожидаю, что причина может быть разного характера. Заранее спасибо
Какую версию MSVS вы используете? – NathanOliver
Разница в ОС не имеет значения. Важно то, что в вашем случае компилятор для Windows VC++, а под Ubuntu gcc я бы сказал, хотя вы не укажете. На одной платформе всегда есть несколько компиляторов, поэтому перечисление платформы не очень помогает. – Rakete1111
Похоже, вы пытаетесь скопировать поток. Предоставьте ** полный, воспроизводимый пример **, минимальный. –