我正在使用一些 HID 设备,所有这些设备都有派生自以下基类的类(在main.h中):
class HIDDevice {
public:
hid_device *device;
virtual void read(std::fstream)=0;
virtual void write(std::fstream)=0;
};
这是从它派生的设备类之一(device.h):
class MyDevice : public HIDDevice {
public:
void read(std::fstream);
void write(std::fstream);
};
...以及实施示例:
void MyDevice::read(std::fstream file) {
// Read from card and write to file
response = send_command(READ_DEVICE);
file.write((char *)&response[0], response.size());
}
...和来电者:
fstream file (filename, ios::binary | ios::in);
dev->read(file);
当我尝试编译时,出现以下错误:
main.cpp:294:27: 错误: 使用已删除的函数 'std::basic_fstream::basic_fstream(const std::basic_fstream&)'<br> 在源/main.cpp:24:0: /usr/ 包含的文件中include/c++/4.6/fstream:761:11: error: 'std::basic_fstream::basic_fstream(const std::basic_fstream&)' 被隐式删除,因为默认定义格式不正确:
...我不知道为什么,可能是因为我对 C++ 还很陌生,而且我做了一些愚蠢的事情。
将参数更改回引用(使用&),我收到以下错误:
/main.o:(.rodata._ZTV13MyDevice[vtable for MyDevice]+0x18): undefined reference to `MyDevice::write(std::basic_fstream >&)'
谁能帮我解决这个问题?