ODB Relationship не компилируется

У меня очень простая установка отношений, которую я не могу заставить выводить odb для компиляции, и это дает мне ошибку ниже компилятора. Я использую умные указатели Qt для реализации отношений, и мне всегда кажется, что я сталкиваюсь с одной и той же ошибкой, независимо от того, сколько перестановок я прохожу.

/usr/local/include/odb/database.ixx:570:54: error: no matching function for call to ‘odb::object_traits_impl<Inspection, (odb::database_id)1u>::find(odb::database&, const id_type&)’

вот родительский класс

#ifndef PART_H
#define PART_H

class Part;

#include <odb/core.hxx>
#include <odb/qt/lazy-ptr.hxx>
#include <QtCore/QString>
#include <QtCore/QByteArray>
#include <QtCore/QUuid>
#include <QtCore/QDateTime>
#include <QtCore/QSharedPointer>
#include <QtCore/QList>
#include <QtCore/QSet>
#include "Inspection.h"
/** this class represents the atomic parts which are acquired */
#pragma db object
class Part{
public:

/** public constructor */
Part(QString id);

/** gets the id */
const QString Id() const;

/** Get (or create) the inspection for a given system name */
QSharedPointer<Inspection> GetInspection(QString systemName = "");

private:

/** constructor */
Part(){}

/** odb needed reference */
friend class odb::access;

/** a list of all of the inspections for this part */
//#pragma db value_not_null inverse(parent)
QList<QSharedPointer<Inspection> > inspections;

/** holds a unique name/id for this object */
#pragma db id
QString id;
};

#endif // PART_H

А вот и ребенок

#ifndef INSPECTION_H
#define INSPECTION_H

class Inspection;

#include <odb/core.hxx>
#include <odb/qt/lazy-ptr.hxx>
#include <QtCore/QString>
#include <QtCore/QByteArray>
#include <QtCore/QUuid>
#include <QtCore/QDateTime>
#include <QtCore/QSharedPointer>
#include <QtCore/QList>
#include <QtCore/QSet>
//#include "SurfaceDefect.h"#include "vec2f.h"#include "Part.h"#include "MILImage.h"
using namespace std;

#pragma db object
class Inspection{
public:

/** gets the full image object for this inspection */
const QWeakPointer<MILImage> GetFullImage() const;

/** gets the start time of the inspection */
const QDateTime GetStarted() const;

/** gets the end time of the inspection */
const QDateTime GetEnded() const;

/** Gets the system name on which the inspection was acquired */
const QString GetSystemName() const;

/** sets the full image and takes ownership of it */
void SetFullImage(MILImage* fullImage);

/** sets the start time of the inspection */
void SetStarted(QDateTime started);

/** Sets the end time of the inspection */
void SetEnded(QDateTime ended);

private:

/** constructor */
Inspection(QString systemName);

/** odb needed reference */
friend class odb::access;

/** we give access to the part class to allow for construction */
friend class Part;

/** A unique identifier for the inspection */
#pragma db id
QUuid id;

/** the name of the system which acquired the inspection */
QString systemName;

/** The time and date the inspection was recorded to disk */
QDateTime Recorded;

/** A vector of all defects */
//#pragma db inverse(Source)
//QVector< QLazyWeakPointer<SurfaceDefect> > SurfaceDefects;

/** The username of the person inspecting the sheet */
QString Username;

/** All the metadata crammed into one QString */
QString MetaData;

/** The positions of the 4 corners of a sheet */
// TODO: this should not be transient
#pragma db transient
Vec2f Corners[4];

/** The time and date the inspection started */
QDateTime started;

/** the time and date the inspection ended */
QDateTime ended;

/** the full inspection image */
#pragma db transient
QSharedPointer<MILImage> fullImage;

/** the parent part of this object */
#pragma db not_null
QSharedPointer<Part> parent;
};

#endif // INSPECTION_H

Любая помощь, которая может быть оказана, будет великолепна!

0

Решение

Мне удалось получить обратную связь от разработчика ODB, который заявил, что это может произойти, когда не удается создать конструктор по умолчанию, как я делал в классе Inspection. Спасибо Борис!

0

Другие решения


По вопросам рекламы [email protected]