目前,我有这个:
void ClassA::aFunction(QVector<ClassB *> items) {
//stuff
}
我想将ClassA :: aFunction的参数转换为带有模板的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中也有一个错误“方法'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;
}
答案 0 :(得分:3)
几乎是对的:
template <class T> void ClassA::aFunction(QVector<T *> items)
{
//stuff
}
你必须在类定义中以相同的方式声明:
class ClassA
{
template <class T> void aFunction(QVector<T*>);
// ...
};
顺便问一下,你为什么要按价值传递QVector
?