我有一个有许多子类的基类。我将如何在基类中实现模板运算符而不是加载器以适用于所有继承类?我尝试使用 + 运算符创建一个,但它抱怨我的参数太多。我实际上不确定这是做这件事的正确方法(我刚刚开始使用 OOP),所以如果你能想到一个更好的方法,那也很棒。
我正在制作一个库,其中每个度量空间都是一个类。我想创建一个每个空间都继承的基类“操作”。
我的模板基类:
#ifndef __libSpace__Operations__
#define __libSpace__Operations__
template< typename T >
class Operations{
public:
friend T operator+( const T& sp, const T& nsp ){
return T(sp.dimension + nsp.dimension);
};
};
#endif
孩子:
#ifndef __libSpace__EuclidSP__
#define __libSpace__EuclidSP__
#include "Operations.h"
class EuclidSP: public Operations<EuclidSP>{
public:
EuclidSP(int n = 0, ...);
~EuclidSP();
double* vector();
private:
int dimension;
double *vec = new double(dimension);
};
#endif
主要的:
#include <iostream>
#include "EuclidSP.h"
int main(int argc, const char * argv[])
{
EuclidSP ob1(3,4.0,5.0,6.0);
EuclidSP ob2(3,2.0,5.0,3.0);
EuclidSP obj3();
obj3 = ob2+ob1;
return 0;
}