我必須在liblas閱讀器類中編寫一個包裝器。我想在構造函數中創建reader實例並將其保存在成員變量中。初始化沒有初始化列表的成員變量和沒有默認構造函數的類型?
class LASPointReader : PointReader{
private:
liblas::Reader reader;
...
}
這就是我想會的工作:
LASPointReader::LASPointReader(string file){
ifstream ifs;
ifs.open(file, std::ios::in | std::ios::binary);
liblas::ReaderFactory f;
reader = f.CreateWithStream(ifs);
...
}
但這種失敗,因爲liblas ::讀者不具有默認構造函數。然後我試圖讓讀者變量的指針,並做
reader = &f.CreateWithStream(ifs);
,因爲現在我得到「R6025 - 純虛函數調用」哪些失敗的錯誤在運行時,當我使用閱讀器。
然後我嘗試了比較難看的初始化列表:
LASPointReader::LASPointReader(string file)
: reader(liblas::ReaderFactory().CreateWithStream(ifstream(file, std::ios::in | std::ios::binary)))
{
但現在,請讀者僅適用部分。它確實可以加載文件的頭部,但另一種應該讀取內容的方法失敗。
我該如何將這個閱讀器實例存儲在我的課堂上?
工作方式類似於魅力。 感謝您的解釋,現在它是有道理的。 – Markus