C++ 我的模板代码是C++;正在生成奇数错误,我可以';我似乎无法解决。
我的代码中出现了一些错误,我无法找出它们。我将代码简化为非常基本的简单函数/类调用,但仍然存在一些问题C++ 我的模板代码是C++;正在生成奇数错误,我可以';我似乎无法解决。,c++,function,class,templates,C++,Function,Class,Templates,我的代码中出现了一些错误,我无法找出它们。我将代码简化为非常基本的简单函数/类调用,但仍然存在一些问题 #include <iostream> using namespace std; template <class T> class FC { private: double netprofit, costofinvest; double curras, invent, curliab; public: void ROI(double
#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;
}
您需要提供一个模板参数“T”:
FC<float> ROI, AcidTestRatio;
更新:
由于您没有使用
T
,您只需删除模板
行,修改代码使其看起来像这样无效ROI(T np,T ci)
和无效ATR(T ca,T inv,T cl)
不会修复似乎在main中出现的错误。@YelizavetaYR这里没有显示其他相关代码。@πάνταῥεῖ 还有许多其他功能,但都是半独立的。分配是创建一系列可以使用任何传递的数据类型的模板类。这就是我试图对ROI和ATR函数所做的,请您解释一下这意味着什么-据我所知,为了模板a,您需要添加这行代码模板,然后使用T,无论是否使用T定义,代码都不起作用。模板的要点是创建类的版本(或函数)只有细微的变化(例如,可以存储整数或浮点数的存储类)。从阅读《C++教程》开始,正确,但您的代码行表明它是浮点数,我们希望将其设置为泛型类型。根据运行时,它可以是任何类型。(链接将我带到一本书,我有书,我有阅读材料)和建议的更改-即使我所有的东西都是T(我在某个时候做了,然后又改回来),我仍然会收到相同的错误消息。所有错误消息都来自main。(你的建议确实修复了它),但我不确定我是否理解为什么需要它。“泛型类型它可以是任何类型,具体取决于运行时”:。然后,模板不是您想要的…模板在编译时完全确定或指定。您可以有FC或FC,但不能有FC。
FC<float> ROI, AcidTestRatio;
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;
}
};