0

私はプログラミングと C++ が初めてで、この問題に遭遇したようです。

さまざまなセンサー オフセットを含む構成ファイルを作成し、boost::serialization ロードを使用して他のクラスで読み取ることができる xml として保存しています。

すべてのセンサーには同じ種類のオフセットがあるため、オフセット定義を含む汎用構造体を作成したいと考えています。シリアル化と保存/読み込みを汎用スタクトに保持し、必要な場合にのみ別の構造体でインスタンス化したいと思います。

各センサーには独自の構造体があるため、他のクラスは必要なセンサー構造体のみを使用する必要があります。

もともと、各センサー構造体にシリアル化/保存/ロードがあり、正常に機能しました。しかし、これをジェネリック構造体に移動した後、それを呼び出すことができないようです。

コードは次のとおりです。

10 #pragma once
 11 #ifndef OFFSET_CONFIG_H
 12 #define OFFSET_CONFIG_H
 13 
 14 #include <boost/archive/xml_oarchive.hpp>
 15 #include <boost/archive/xml_iarchive.hpp>
 16 #include <boost/serialization/nvp.hpp>
 17 #include <fstream>
 18 #include <string>
 19 
 20 typedef struct Offset
 21 {
 22     std::string name;            // Offsets type.
 23     double offsetX;
 24     double offsetY;
 25     double offsetZ;
 26     double roll;
 27     double pitch;
 28     double yaw;
 29 
 30     template<class Archive>
 31     void serialize(Archive & ar, const unsigned int version)
 32     {
 33         using boost::serialization::make_nvp;
 34         ar & make_nvp("offsetType", name);
 35         ar & make_nvp("OffsetX", offsetX);
 36         ar & make_nvp("OffsetY", offsetY);
 37         ar & make_nvp("OffsetZ", offsetZ);
 38         ar & make_nvp("Roll", roll);
 39         ar & make_nvp("Pitch", pitch);
 40         ar & make_nvp("Yaw", yaw);
 41     }
 42 
 43     void save(const std::string& filename)
 44     {
 45         std::fstream ofs(filename.c_str(), std::fstream::trunc | std::fstream::out);
 46         boost::archive::xml_oarchive xml(ofs);
 47         xml << boost::serialization::make_nvp("temp", *this);
 48     }
 49 
 50 };
 51  
 70 struct LaserOffset
 71 {
 72   Offset laser;
 90   laser.serialize(Archive & ar, const unsigned int version);
 91   //laser.save(const std::string& filename);
 98 };

168 #endif

現在スローされているエラーは次のとおりです。

OffsetConfig.h:90: error: ISO C++ forbids declaration of ‘laser’ with no type 

OffsetConfig.h:90: error: expected ‘;’ before ‘.’ token

誰かが私が間違っていることを手伝ってくれますか? 構造体からシリアライズ/保存要素を使用する方法と、個々の構造体のためにそれを保存する方法は?

4

1 に答える 1