Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我的模板代码是C++;正在生成奇数错误,我可以';我似乎无法解决。_C++_Function_Class_Templates - Fatal编程技术网

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;
    }
};