В интернете говорят, что если ты хочешь завернуть forward declaration объект unique_ptr то для внешнего класса нужен ДЕСТРУКТОР.
Чо этой падле не нравится?
In file included from /usr/include/c++/4.9/memory:81:0,
from meshedobject.hpp:5,
from render.cpp:13:
/usr/include/c++/4.9/bits/unique_ptr.h: In instantiation of ‘void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = MOImpl]’:
/usr/include/c++/4.9/bits/unique_ptr.h:236:16: required from ‘std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = MOImpl; _Dp = std::default_delete<MOImpl>]’
meshedobject.hpp:20:21: required from here
/usr/include/c++/4.9/bits/unique_ptr.h:74:22: error: invalid application of ‘sizeof’ to incomplete type ‘MOImpl’
static_assert(sizeof(_Tp)>0,
#ifndef MESHEDOBJECT_HPP
#define MESHEDOBJECT_HPP
#include <string>
#include <memory>
#include "scene.hpp"
#include "object.hpp"
struct MOImpl;
class MeshedObject: public Object {
std::unique_ptr<MOImpl> impl;
public:
void render(Scene *scene);
void init(std::string name, const char *mesh_file, const char *texture_file, const char *vsKey, const char *fsKey);
void setPosition(float x, float y, float z);
~MeshedObject() {}
// string getName();
};
#endif
@kerrigan не должно
@kuzy000 это какой-то новый плюсоблядский синтаксис?
@kuzy000 ничего не поменялось.
/usr/include/c++/4.9/bits/unique_ptr.h:74:22: error: invalid application of ‘sizeof’ to incomplete type ‘MOImpl’
@kuzy000 определил конструкторы в cpp файле, все норм.
походу ебаные шаблоны интсанцировались в хедере, где тип impl неполный.