C++ C++;模板类-继承调用错误的函数
我想停止调用基“int”函数。我想用“double”来称呼inheritedC++ C++;模板类-继承调用错误的函数,c++,function,templates,inheritance,containers,C++,Function,Templates,Inheritance,Containers,我想停止调用基“int”函数。我想用“double”来称呼inherited #包括 使用名称空间std; 模板 甲级{ 公众: }; 模板 甲级{ 公众: 无效推送(常量int和val) { 从您的问题中,我了解到您需要不同版本的push,具体取决于T 您可以使用元编程来实现这一点 #包括 模板 甲级{ 公众: 无效推送(常数T和值){ //一般版本 } }; 模板 A类>>{ 公众: 无效推送(常数T和值){ //整数和浮点版本 } }; 没有函数在代码中使用double。因此无法“重写它”
#包括
使用名称空间std;
模板
甲级{
公众:
};
模板
甲级{
公众:
无效推送(常量int和val)
{
从您的问题中,我了解到您需要不同版本的push
,具体取决于T
您可以使用元编程来实现这一点
#包括
模板
甲级{
公众:
无效推送(常数T和值){
//一般版本
}
};
模板
A类>>{
公众:
无效推送(常数T和值){
//整数和浮点版本
}
};
没有函数在代码中使用double
。因此无法“重写它”仅使用派生?并使用double而不是int?重写它?继承时不会重写任何内容。基的成员仍然是基的相同成员。为什么在这里使用派生?或专门化?您试图解决什么问题?为什么不编写void push(const T&val)
在主模板中,并摆脱专门化?是数字的
不是标准特征。您可能的意思是是算术的
(恰好已经包括浮点类型)我想写的是std::is_integral
,我编辑了答案。哇,谢谢你的回答!我只是问…有没有其他方法不用std的工具?谢谢你的回答伙计们:)
#include <iostream>
using namespace std;
template<typename T, size_t N>
class A {
public:
};
template<size_t N>
class A<int, N> {
public:
void push(const int& val)
{
cout << val << endl;
}
};
template<size_t N>
class A<double, N>
: public A<int, N>
{
public:
};
int main() {
A<double, 8> r;
r.push(5.7);
return 0;
}