首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ODB关系无法编译

ODB关系无法编译
EN

Stack Overflow用户
提问于 2014-09-19 15:54:48
回答 1查看 586关注 0票数 0

我有一个非常简单的关系设置,我无法让odb输出编译,它给了我下面的编译器错误。我正在使用Qt智能指针来实现这种关系,无论我经历了多少排列,我似乎总是遇到相同的错误。

代码语言:javascript
复制
/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&)’

下面是父类

代码语言:javascript
复制
#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

这就是那个孩子

代码语言:javascript
复制
#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

任何可以给予的帮助都将是伟大的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-23 13:46:47

我能够从ODB开发人员那里得到反馈,他说,当一个人不能像我在检查类中那样创建一个默认的构造函数时,这种情况就会发生。谢谢鲍里斯!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25937901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档