-5
template <typename T>
class Form { ... }
Form<MainWindow*> form;
T將成爲T *C++模板使用的問題指針
有沒有辦法使用:: staticMetaObject莫名其妙地在T現在這就是T *?我想保留這部分Form<MainWindow*> form;
喜歡它
感謝您對我的幫助
編輯
在評論希望我提供一些代碼。
class FormBase : public QObject
{
Q_OBJECT
public:
FormBase() {}
};
template <typename T>
class Form : public FormBase, public QList<T>
{
public:
Form(T a)
{
QList<T>::append(a);
}
T operator<<(const T t)
{
QList<T>::append(t);
qDebug() << T::staticMetaObject.className();
}
};
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
form = new Form<MainWindow*>(this);
*form << this;
}
正如所指出的,T變成了T *,這就是爲什麼T :: staticMetaObject不起作用。當然,我想讓模板就像那個Form一樣,因此應該清楚的是列表中有指針。
http://stackoverflow.com/help/how-to-ask –
我做編輯,我的問題 – Invader
@Invader你爲什麼不首先在Form類中使用'T *',並簡單地寫'form = new表(this);'? –