将流定义为私有类变量似乎在Linux下有效,但在WindowsVisualStudio下无效
Defining a stream as private class variable seems working under Linux but not under Windows Visual Studio
我已经在这个论坛上找到了几个关于不允许复制流对象的主题,但我不确定(至少我不这么认为)这是我的情况。
我想将流定义为给定类的私有变量。我过去已经为一个在Ubuntu下编写的应用程序做过这样的操作,比如
class of_driving{
public:
of_driving();
~of_driving();
// ... Some public stuff ...
private:
// ... Some private stuff ...
std::ofstream J_f;
};
这很容易奏效。现在,我正在尝试为另一个应用程序做基本上相同的事情,但我正在Windows:下的Visual Studio上工作
class FTSensor{
public:
FTSensor();
~FTSensor();
private:
std::stringstream ftMeasurementSS;
};
然而,当我构建解决方案时,我得到了以下错误:
错误2错误C2248:"std::basic_ios<_Elem,_Traits>::basic_ios":无法访问类"std::basic_ios<_Elem,_Traits>'D:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\include\stream 724
有人能解释我的这种行为吗?我强调我使用不同的操作系统,只是因为这似乎是迄今为止我唯一的不同,但我也认为原因可能是不同的。提前感谢
作为@Cheersandhth-Alf和@PaulMcKenzie指出,错误的原因在于复制机制。事实上,在我的main.cpp
中,我写了
int main(){
FTSensor fts;
tg.create_thread(boost::bind(&FTSensor::threadCallback,fts));
tg.join_all();
}
其中整个类FTSensor
的实例fts
通过boost::bind
方法中的值传递,从而产生上述错误。纠正中的行
tg.create_thread(boost::bind(&FTSensor::threadCallback,&fts));
导致生成成功。感谢您的快速支持。
相关文章:
- 在C++/Linux中设置单调时钟的一些技巧
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 欧拉项目#8答案是大以获得有效答案
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如何在linux终端中同时编译和运行c++代码
- 正则表达式C++如何搜索有效的 Linux 设备节点
- 在 Linux 中,recv() 有效,但 recvmsg() 不起作用
- 什么是 gcc Linux x86-64 C++中的有效指针
- 使用C++在 Linux 中复制文件的有效方法
- 这是从VS window c ++项目迁移到linux项目的最有效方法
- 将流定义为私有类变量似乎在Linux下有效,但在WindowsVisualStudio下无效
- Linux g++ new (std::nothrow) 确实有效
- 分段错误(核心转储) - 代码在 VS 中有效,但在 Linux 终端中不起作用
- Linux,介绍如何运行子二进制文件并有效地传递有效负载
- 如何在Linux下有效地等待RS232的CTS或DSR
- C++,linux,如何有效地从字符串中弹出非拉丁字符pop_back()
- linux下如何检查系统时间是否有效
- std::stringstream推理在Visual Studio 2013上有效,但在Linux下无效
- 将opengl窗口转换为std::size_t并再次返回在Linux中有效,但在OS X中无效