私の環境は、Ubuntu 14.04のCGAL 4.5とQT5です。このCGALのQTインタフェース関数を正しく呼び出す方法は?
私はCGALのQt interfaceを使用して幾何学的なオブジェクトの点、線、セグメントをレンダリングする方法を学習しています。このフレームワークをオンラインで使っている例はありませんので、現時点では苦労しています。
テストコードが機能しないようです。それはコンパイルされますが、seg-faultがスローされます。
QtCreatorを使用して作成したQTwidgetsアプリケーションのMainWindow.cpp
ファイルのコードです。
#include <iostream>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Qt/PointsGraphicsItem.h>
#include <CGAL/Qt/SegmentsGraphicsItem.h>
#include <vector>
typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_2 Point_2;
typedef Kernel::Segment_2 Segment_2;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
std::vector<Point_2> pts;
pts.push_back(Point_2(1,1));
pts.push_back(Point_2(10,10));
CGAL::Qt::PointsGraphicsItem< std::vector<Point_2> > graphical_points(&pts);
}
最後の行が問題のようです。私のコードでは、この時点でセグフルート を投げつけ続けています。メッセージは
The inferior stopped because it received a signal from the operating system.
Signal name : SIGSEGV
Signal meaning : Segmentation fault
この関数呼び出しではどうしたのですか?グラフィックス・シーンにポイントを追加する必要があることは分かっていますが、現時点では重要ではありません。
理想的には、コードを実行すると、シーンにこれらのポイントを追加すると、2つのポイントが表示されます(1つは1,1、もう1つは10,10)。
Hereは、ペーストビンのフルPointsGraphicsItem.h
ファイルへのリンクです。