【发布时间】:2015-06-30 15:16:24
【问题描述】:
我的代码中出现了一些错误,我无法弄清楚。我将代码缩减为非常基本的简单函数/类调用,但仍然存在问题。
#include <iostream>
using namespace std;
template <class T>
class FC
{
private:
double netprofit, costofinvest;
double curras, invent, curliab;
public:
void ROI(double np, double ci)
{
netprofit = np; costofinvest = ci;
}
double getROI()
{
return (netprofit - costofinvest) / costofinvest;
}
void ATR(double ca, double inv, double cl)
{
curras = ca; invent = inv; curliab = cl;
}
double getATR()
{
return (curras - invent) / curliab;
}
};
int main()
{
FC ROI, AcidTestRatio;
ROI.ROI(27, 288);
cout << ROI.getROI() << endl;
AcidTestRatio.ATR(77, 2l, 344);
cout << AcidTestRatio.getATR() << endl;
return 0;
}
我得到的错误如下所示:
In function 'int main()':
39:22: error: missing template arguments before 'ROI'
41:2: error: 'ROI' was not declared in this scope
44:2: error: 'AcidTestRatio' was not declared in this scope
【问题讨论】:
-
因为你没有使用
T,你可以删除template<class T>这一行 -
修改代码看起来像这样
void ROI(T np, T ci)和void ATR(T ca, T inv, T cl)并不能修复 main 中出现的错误。 -
@YelizavetaYR 还有其他相关代码你没有在这里显示。
-
@πάνταῥεῖ 还有许多其他功能,但都是半独立的。任务是创建一系列可以使用任何传递的数据类型的模板类。这就是我试图仅对 ROI 和 ATR 功能做的事情
标签: c++ function class templates