无法访问公共成员

时间:2014-09-16 20:33:25

标签: c++ qt

我在访问我的数据库时遇到问题。我不会粘贴整个代码,只是实际部分:

filmdb.h

class Film: public QWidget
{
...
public:
    QSqlDatabase db;
}

addfilm.h

#include "filmdb.h"

class AddFilm: public QWidget
{
...
}

filmdb.cpp

Film::Film(QWidget *pwgt): QWidget (pwgt)
{
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("films.fdtb");
    ...
}

addfilm.cpp

#include "addfilm.h" // so filmdb.h is included

AddFilm::AddFilm(QWidget *pwgt): QWidget(pwgt)
{
    //here is the problem
    //when i try to use db
    //compilator says undeclared identifier
}

那么为什么我不能在addfilm.cpp中使用db?感谢。

2 个答案:

答案 0 :(得分:1)

如果你想这样做,那么创建Film类的实例,你就可以使用db。

在addFilm构造函数中:

Film *mFilm = new Film;
mFilm->db//do actions with db

答案 1 :(得分:1)

db是班级Film的成员,但您尝试在课程AddFilm中使用该课程并非来自Film ...

如果您的意思是AddFilmFilm的特化,那么您必须从AddFilm派生Film,在addfilm.h中执行以下操作:

#include "filmdb.h"

class AddFilm: public Film
{
...
}

此时您可以在db中使用AddFilm::AddFilm()