Недопустимое новое выражение типа абстрактного классаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Недопустимое новое выражение типа абстрактного класса

Сообщение Anonymous »

В настоящее время я пишу трассировщик лучей для университетского класса.
Чтобы загружать сцены из файлов, я написал 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_;
};
в моей реализации загрузчика SDF я написал метод read():

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»