私はいくつかの HID デバイスを使用していますが、そのすべてに次の基本クラス ( main.h 内)から派生したクラスがあります。
class HIDDevice {
public:
hid_device *device;
virtual void read(std::fstream)=0;
virtual void write(std::fstream)=0;
};
そこから派生したデバイス クラスの 1 つを次に示します ( 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> source/main.cpp:24:0 からインクルードされたファイル: /usr/ include/c++/4.6/fstream:761:11: エラー: 'std::basic_fstream::basic_fstream(const std::basic_fstream&)' は暗黙的に削除されます。これは、デフォルトの定義の形式が正しくないためです:
...そして、おそらく私がC ++にかなり慣れていないため、理由がわかりません。ばかげたことをしました。
引数を (& を使用して) 参照に戻すと、次のエラーが発生します。
/main.o:(.rodata._ZTV13MyDevice[MyDevice の vtable]+0x18): 「MyDevice::write(std::basic_fstream >&)」への未定義の参照
誰でもこの問題を解決するのを手伝ってもらえますか?