使用模板...我的代码有什么问题?
Using templates... What's wrong with my code?
我最近刚刚学习C++中的模板。但即使我做的每件事都和我的课程完全一样,我也犯了3个错误。
这是main.cpp:
#include <iostream>
#include "szablony.h"
using namespace std;
int main()
{
cout << nmax<int>(55,402) << endl;
Klasa<double> a1;
a1.ustaw(25.54);
Klasa<double> a2;
a2.ustaw(44.55);
cout << a1.podaj() << " :max: " << a2.podaj() << " = " <<
nmax<Klasa>(a1.podaj(),a2.podaj()) << endl;
}
这就是"szablony.h":
#include <iostream>
using namespace std;
template <typename T> class Klasa
{
T wartosc;
public:
template <typename U> T podaj()
{
return (this -> wartosc);
}
template <typename U> void ustaw(U war)
{
wartosc=war;
}
};
template <typename T, typename T1, typename T2> T nmax(T1 n1, T2 n2)
{
return (n1 > n2 ? n1 : n2);
}
template <> Klasa nmax<Klasa>(Klasa n1, Klasa n2)
{
return (n1.podaj() > n2.podaj() ? n1 : n2);
}
这些就是错误:
"szablony.h":|第27行|错误:没有参数列表的模板名称"Klasa"的使用无效|
main.cpp |第16行|错误:调用"Klasa::podaj()"|时没有匹配的函数
main.cpp |第17行|错误:调用"Klasa::podaj()"|时没有匹配的函数
这门课是从2004年开始的,顺便说一句,这可能是一个原因,但即使我在网上看,一切似乎都很好…
提前感谢:)
主要问题是Klasa
是一个模板类,但您在将nmax
专门化为常规类时使用了它。特别地,Klasa
不表示类型,但是例如Klasa<int>
表示类型。
因此,要么让函数返回一个模板模板,要么使用Klasa<type>
相关文章:
- 警告处理为错误这里有什么问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 违反const正确性:我应该现实地期待什么问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- 我的逻辑反转字符串中的元音有什么问题?
- 需要以下代码的帮助,下面的代码有什么问题
- 常量公共成员有什么问题?
- 以下代码中的函数模板有什么问题?
- 这个返回元素位置的基于循环的函数有什么问题?
- creat_list2功能有什么问题?
- 格式说明符C++有什么问题
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 我的堆栈和库存清单程序的结构有什么问题?
- 此工厂功能有什么问题?
- 以下 C++ 代码有什么问题?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 它解决了什么问题,对于非真空初始化,生命周期在初始化之前就开始了