Извините за этот глупый вопрос, но я не могу найти ответ на себя, я слишком новый в 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()'? –
1. gcc на linux и mingw на окнах 2. не изменяется – silent
Вы _really_ выполняете только две строки «пользователь DBUserObject», за которым следует 'user.load (3);'? – Troubadour