3
私は正当な理由で混乱しています。外部のシリアライゼーション機能ではコンパイルされません。エラーが発生する穀物のシリアル化エラー
で提供されているタイプとアーカイブの組み合わせでシリアルが見つかりませんでした。
ので、以下のコードは、
#include <fstream>
#include <glm/glm.hpp>
#include "SceneObject.h"
#include <cereal/cereal.hpp>
#include <cereal/archives/json.hpp>
template<typename Archive> void serialize(Archive& archive, glm::vec3& v3)
{
archive(cereal::make_nvp("x", v3.x), cereal::make_nvp("y", v3.y), cereal::make_nvp("z", v3.z));
}
struct something
{
public:
float x, y, z;
};
template<typename Archive> void serialize(Archive& archive, something& v3)
{
archive(cereal::make_nvp("x", v3.x), cereal::make_nvp("y", v3.y), cereal::make_nvp("z", v3.z));
}
int main(int argc, char** argv)
{
SceneObject test;
test.transform().setPosition(1.0f,2.0f,3.0f);
{
std::ofstream file("TestPath.json");
cereal::JSONOutputArchive output(file);
glm::vec3 p = test.transform().getPosition();
output(p);
}
return 0;
}
をコンパイルしていませんが、これは、私は文字通りコピーして、何かにGLMからのコードを保存する:: vec3を貼り付けるだけ変更
#include <fstream>
#include <glm/glm.hpp>
#include "SceneObject.h"
#include <cereal/cereal.hpp>
#include <cereal/archives/json.hpp>
template<typename Archive> void serialize(Archive& archive, glm::vec3& v3)
{
archive(cereal::make_nvp("x", v3.x), cereal::make_nvp("y", v3.y), cereal::make_nvp("z", v3.z));
}
struct something
{
public:
float x, y, z;
};
template<typename Archive> void serialize(Archive& archive, something& v3)
{
archive(cereal::make_nvp("x", v3.x), cereal::make_nvp("y", v3.y), cereal::make_nvp("z", v3.z));
}
int main(int argc, char** argv)
{
SceneObject test;
test.transform().setPosition(1.0f,2.0f,3.0f);
{
std::ofstream file("TestPath.json");
cereal::JSONOutputArchive output(file);
glm::vec3 p = test.transform().getPosition();
something s;
s.x = p.x;
s.y = p.y;
s.z = p.z;
output(s);
}
return 0;
}
をコンパイルDOES glm :: vec3を「何か」に変換します。それは私には意味がありません。私はそれが名前空間のものかもしれないと思うが、私はそれを修正する方法を知りません。