Чтобы загружать сцены из файлов, я написал sdfloader для чтения файлов sdf и создания сцен для них.
Если я теперь захочу скомпилировать загрузчик, я получу следующую ошибку:
Код: Выделить всё
rc/sdf_loader.cpp: In member function 'void SDFloader::add_shape(std::istringstream&)':
src/sdf_loader.cpp:95:58: error: invalid new-expression of abstract class type 'box'
&scene_.materials[mat]));
^
Класс sdf_loader выглядит следующим образом:
Код: Выделить всё
class SDFloader {
public:
SDFloader();
~SDFloader();
Scene const& scene() const;
void read(std::string file);
private:
void add_material(std::istringstream&);
void add_shape(std::istringstream&);
void add_light(std::istringstream&);
void add_camera(std::istringstream&);
void apply_transformation(std::istringstream&);
private:
Scene scene_;
};
Код: Выделить всё
void SDFloader::add_shape(std::istringstream& iss) {
std::string name;
iss >> name;
if(name == "box") {
double x1,y1,z1,x2,y2,z2;
std::string mat;
iss >> name >> x1 >> y1 >> z1 >> x2 >> y2 >> z2 >> mat;
scene_.shapes.insert(new box(point(x1,y1,z1),
point(x2,y2,z2),
name,
&scene_.materials[mat]));
}
Где проблема в моем коде? Я действительно этого не вижу
Я использую g++-4.9 - std=c++0x для компиляции и связывания всего
Подробнее здесь: https://stackoverflow.com/questions/238 ... class-type
Мобильная версия