C++ C++;模板类-继承调用错误的函数

C++ C++;模板类-继承调用错误的函数,c++,function,templates,inheritance,containers,C++,Function,Templates,Inheritance,Containers,我想停止调用基“int”函数。我想用“double”来称呼inherited #包括 使用名称空间std; 模板 甲级{ 公众: }; 模板 甲级{ 公众: 无效推送(常量int和val) { 从您的问题中,我了解到您需要不同版本的push,具体取决于T 您可以使用元编程来实现这一点 #包括 模板 甲级{ 公众: 无效推送(常数T和值){ //一般版本 } }; 模板 A类>>{ 公众: 无效推送(常数T和值){ //整数和浮点版本 } }; 没有函数在代码中使用double。因此无法“重写它”

我想停止调用基“int”函数。我想用“double”来称呼inherited

#包括
使用名称空间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;
}