由于我使用了多种技术,我不太熟悉(将代码拆分成文件,模板),所以我用最简单的方法重新创建了它认为:使用模板函数重载
classes.h:
class baseClass{
public:
virtual void myfunction(double dA, double dB) = 0; //Pure virtual function
virtual void myfunction(double dC) = 0;//Overloaded pure virtual function
};
class derivedClass1 :baseClass{
public:
void myfunction(double dA, double dB)override;
void myfunction(double dC)override;
};
class derivedClass2 :baseClass{
public:
void myfunction(double dA, double dB)override;
void myfunction(double dC)override;
};
classes.cpp:
#include"classes.h"
void derivedClass1::myfunction(double dA, double dB){
//DO STUFF
}
void derivedClass2::myfunction(double dA, double dB){
//Do different stuff to derivedClass1
}
template <class type>
void type::myfunction(double dC){
double dA = dC;
double dB = 0; //In place of a complex calculation
myfunction(dA, dB) //Call the function for the
//relevant class and 2 input arguments.
}
主:
#include"classes.h"
int main(){
derivedClass1 example;
example.myfunction(1.0);
}
我想要做的是只为一个输入参数用模板函数重载所有函数。由于有很多派生类我想使用模板。然而,当我做这样的事情时,我得到这个错误:
error C2063: 'myfunction' : not a function
有没有简单的方法来做到这一点或更好的方法?我已经尝试将模板放在头文件中,并删除类中的声明,但这也不起作用。
不能使用这样的模板。也许你应该在再次尝试之前阅读模板。 – Walter