工作我有我新的C的结构运算符=不与fstream的
struct myStruct {
fstream fp;
char *buffer;
size_t size;
};
++和试图写一个代码,其中一个线程将从文件读入缓冲器和主线程将写入缓冲器到其他文件。代码的示例如下:
int main() {
pthread tid1;
struct myStruct readArgs;
fstream fileP, fileP2;
fileP.open("/tmp/20MBFile", fstream::in);
fileP2.open("/tmp/trial-file", fstream::out);
char *buffer;
readArgs.fp = fileP;
readArgs.buffer = buffer;
readArgs.size = 1048576;
pthread_create(&tid1, NULL, Read, &readArgs);
pthread_join(tid1, NULL);
fileP2.write(buffer, 1048576);
......
}
读取功能如下:然而
void *Read(struct myStruct *readArgs) {
readArgs->fp.read(readArgs->buffer, readArgs->size);
pthread_exit(NULL);
}
,当我编译我的代码,我得到以下错误:
error: use of deleted function 'std::basic_fstream& std::basic_fstream::operator=(const std::basic_fstream&)' readArgs.fp = fileP;
AND
error: invalid conversion from 'void* ()(myStruct)' to 'void* ()(void)' [-fpermissive] pthread_create(&tid1, NULL, Read, &readArgs); ^ In file included from /usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/x86_64-redhat-linux/bits/gthr-default.h:35:0, from /usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/x86_64-redhat-linux/bits/gthr.h:148, from /usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/ext/atomicity.h:35, from /usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/bits/ios_base.h:39, from /usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/ios:42, from /usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/ostream:38, from /usr/lib/gcc/x86_64-redhat-
....
/usr/include/pthread.h:232:12: error: initializing argument 3 of 'int pthread_create(pthread_t*, const pthread_attr_t*, void* ()(void), void*)' [-fpermissive] extern int pthread_create (pthread_t *__restrict __newthread,
我是在这里丢失什么? 在此先感谢!
那么可以在这里得到什么解决方案 –
在'struct myStruct readArgs;'中为关键字'struct'是可选的C++ – sjsam
它在实际代码中声明,在此处粘贴时错过。编辑它。 –