我在C++中的模板代码正在生成奇怪的错误,我似乎无法解决。
My template code in C++ is generating odd errors I can't seem to resolve.
我的代码中出现了一些错误,但我无法弄清楚它们。我将代码简化为非常基本的简单函数/类调用,但仍然有问题。
#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':
FC<float> ROI, AcidTestRatio;
但正如 alain 指出的那样,您还没有使用 T,因此您不妨从代码开头删除template <class T>
。
或者,您可能希望使用 T 作为成员的类型,而不是 double
:
template <class T>
class FC
{
private:
T netprofit, costofinvest;
T curras, invent, curliab;
public:
void ROI(T np, T ci)
{
netprofit = np; costofinvest = ci;
}
T getROI()
{
return (netprofit - costofinvest) / costofinvest;
}
void ATR(T ca, T inv, T cl)
{
curras = ca; invent = inv; curliab = cl;
}
T getATR()
{
return (curras - invent) / curliab;
}
};
更新: 完整示例在这里
相关文章:
- Project Euler问题4的错误解决方案
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 你能解释一下什么运行时错误是如何解决它的吗?
- 我看到"use of undeclared identifier"错误,有人可以告诉我如何解决它吗?
- 我的固定时间步长与增量时间和插值的解决方案是错误的吗?
- Arduino 用于语句错误。令牌之前的预期')' ';'。如何解决这个问题?
- 如何在 macOS 卡塔琳娜上解决此错误?
- 如何解决一元"*"(有"字符")错误的无效类型参数?
- Clang 8 带有静态 constexpr 和数组的链接器错误 - 错误是什么以及如何解决它?
- 我正在尝试制作一个自平衡机器人,但编译时存在错误。我不知道如何解决它
- Visual Studio 2017 中的 QtMetaObject 未解决的外部错误
- 我想在 c++ 中对单向链表进行冒泡排序,但我一直面临左值错误,无法解决它
- C++抽象类参数错误解决方法
- 运行VS2008解决方案时运行时错误;解决方案正在构建良好
- g++链接错误-解决方法有效的原因
- 故障错误解决
- 这是HackerRank的错误解决方案