Неверная новая экспрессия абстрактного типа классаC++

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

Сообщение Anonymous »

Я в настоящее время пишу Raytracer для университетского класса.
Чтобы загрузить сцены из файлов, я написал SDFLOALER для чтения файлов SDF и создания сцен. < /p>

Если я теперь хочу скомпилировать загрузчик, я получаю следующую ошибку: < /p>

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

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]));
^
< /code>

Я попытался найти решение, но не удалось. >

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_;
};
< /code>

В моей реализации загрузчика SDF я написал метод read (): < /p>

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]));
}
< /code>

и для каждой другой формы одинаковые вызовы. < /p>

Где проблема в моем коде? Я действительно не вижу этого 

Я использую G ++ - 4.9 - std = c ++ 0x 
, чтобы скомпилировать и связать все

Подробнее здесь: https://stackoverflow.com/questions/238 ... class-type
Ответить

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

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

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

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

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