对不起,这个愚蠢的问题,但我不能找到自己的答案,我用C太新++ :(C++和虚方法重写
class DBObject : public QObject
{
...
protected:
virtual QString tableName() = 0;
};
class DBUserObject : public DBObject
{
...
protected:
virtual QString tableName() { return "profiles"; };
};
而且我在父母的代码:
DBObject::DBObject(quint32 id)
: QObject(0)
{
...
if (id != 0)
load(id);
}
bool DBObject::load(quint32 id)
{
QString query = QString("select %1 from %2 where id = :id")
.arg(fieldList().join(","))
.arg(tableName()); <--- here is trouble
...
}
所以我想执行:?
DBUserObject user(3);
但结果我有一个运行时错误为什么不“配置文件”
你在什么平台上使用什么编译器?如果您将'tableName()'的实现移动到cpp文件中,那么结果是否会发生变化,就像您使用load()一样? – 2010-06-16 12:19:13
1. linux上的gcc和windows上的mingw 2.不改变 – silent 2010-06-16 12:25:56
你是_really_只做两行'DBUserObject user;'后跟'user.load(3);'? – Troubadour 2010-06-16 12:39:53