0
目前,我有這樣的:我如何使用QVector模板?
void ClassA::aFunction(QVector<ClassB *> items) {
//stuff
}
我想談談對ClassA的::機能缺失的參數爲QVector使用模板:
template <class T *> class QVector;
void ClassA::aFunction(QVector<T *> items) {
//stuff
}
這是給我的語法錯誤,那麼什麼是正確的方法來做到這一點?
編輯:
我現在有這樣的:
classA.h:
template <class T>
class ClassA {
public:
void myFunction(ClassB *);
}
classA.cpp:
template <class T>
void ClassA<T>::myFunction(ClassB * b) {
QVector<T *> var = b->myBFunction();
}
classB.h:
template <class T>
class ClassB {
public:
void myBFunction();
private:
QVector<T *> myVar;
}
classB.cpp:
template <class T>
QVector<T *> ClassB<T>::myBFunction() {
return this->myVar;
}
我有ClassA的語法錯誤 「找不到成員聲明」 :: myFunction的。在ClassA :: myFunction中,我也有一個錯誤「method」myBFunction'無法解析「。我如何解決這兩個錯誤?
EDIT2 這出:
classA.h:
class ClassA {
public:
template <class T> void myFunction(ClassB *);
}
classA.cpp:
template <class T>
void ClassA::myFunction(ClassB * b) {
QVector<T *> var = b->myBFunction<T>();
}
classB.h:
class ClassB {
public:
template <class T> void myBFunction();
private:
template <class T> QVector<T *> myVar;
}
classB.cpp:
template <class T>
QVector<T *> ClassB::myBFunction() {
return this->myVar;
}
感謝它的工作!我應該通過參考傳遞QVector嗎? –
@DiZou:是的,很可能你應該。如果您不修改它,則爲Const-reference。 –
請注意,Qt容器具有寫入時複製語義,因此通過引用來傳遞它們以避免不必要的複製並不是嚴格必要的:http://doc.qt.nokia.com/qq/qq19-containers.html – Gnawme