首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C++模板专门化成员函数的定义

C++模板专门化成员函数的定义
EN

Stack Overflow用户
提问于 2018-04-19 13:00:25
回答 1查看 75关注 0票数 2

给定以下类和专门化。如何实现模板类的函数体和类定义之外的两种专门化?显然,每个函数实现都需要声明为inline

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
template <typename T1, typename = void>
struct MyClass
{
    void func();
};
template <typename T1>
struct MyClass<T1, std::enable_if_t<std::is_integral<T1>::value>>
{
    void func();
};
template <typename T1>
struct MyClass<T1, std::enable_if_t<std::is_floating_point<T1>::value>>
{
    void func();
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-19 13:11:12

要对模板类的成员函数进行类外定义,可以重复模板参数,以便形成类的名称。

基本上,要定义这个func()

模板 struct MyClass { void ();};

你会写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
template <typename T1, typename T2>
void MyClass<T1, T2>::func() {}

要定义这一个:

模板结构MyClass> { void ();};

你会写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
template <typename T1>
void MyClass<T1, std::enable_if_t<std::is_integral<T1>::value>>::func() {}

住在哥德波特

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49930163

复制
相关文章
c++之类模板成员函数创建时机
l诶模板中成员函数和普通类成员函数创建的时机是有区别的: 1.普通的成员函数一开始就可以创建; 2.类模板的成员函数在调用时才创建; #include<iostream> using namespace std; class Person1 { public: void showPerson1() { cout << "这里是person1" << endl; } }; class Person2 { public: void showPerson2() {
西西嘛呦
2020/08/26
7030
c++之类模板成员函数的类外实现
#include<iostream> using namespace std; template<class T1,class T2> class Person { public: Person(T1 name,T2 age); void show(); T1 name; T2 age; }; template<class T1,class T2> Person<T1,T2>::Person(T1 name, T2 age) { this->name = name
西西嘛呦
2020/08/26
1.3K0
C++类的成员函数 | 成员函数
在C++中,类的成员函数是函数的一种,它有返回值和函数类型,它与一般函数的区别只是:
小林C语言
2021/01/18
1.9K0
C++类的成员函数 | 成员函数
c++模板学习07之类模板中成员函数创建时机
普通类中成员函数一开始就创建 类模板中成员函数在调用时才创建 #include<iostream> #include<string> using namespace std; //类模板与函数模板的区别 class person1 { public: void f1() { cout << "f1函数调用" << endl; } }; class person2 { public: void f2() { cout << "f2函数调用" << endl; } }; templat
大忽悠爱学习
2021/03/02
5440
c++模板学习07之类模板中成员函数创建时机
C++核心准则T.83:不要将成员函数定义为模板虚函数
T.83: Do not declare a member function template virtual
面向对象思考
2020/09/28
7390
C++类声明和成员函数定义 | 引用多个成员对象
在C++中,一般做法是将类的声明放在指定的头文件中,程序员如果想用该类,只要把有关的头文件包含进来即可,不必在程序中重复书写类的声明,以减少工 作量,提高编程的效率。
小林C语言
2021/01/25
1.9K0
C++类声明和成员函数定义 | 引用多个成员对象
C++ 类模板中成员函数和普通函数创建时机
类模板中成员函数和普通函数创建时机是有区别的: 普通类中的成员函数一开始就创建; 类模板中的成员函数在调用时才创建。 #include<iostream> using namespace std; class Demo1{ public: static void show_demo1(){ cout<<"This is Demo1."<<endl; } }; class Demo2{ public: static void show_demo2(){
耕耘实录
2022/05/09
1.2K0
C++:30 ---C++类成员,成员函数的内存布局
这里要指出的是大家可以看到静态成员函数和静态成员变量sx的地址都是0x00007FF开头的,实际上他们都在全局数据区域存储(全局变量,静态变量),如果你有耐心,可以断点查看下栈空间内的局部变量i的地址:
用户3479834
2021/02/03
1.3K0
C++:30 ---C++类成员,成员函数的内存布局
C++中的const成员变量和成员函数
在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。
芯动大师
2023/10/14
3470
C++中的const成员变量和成员函数
【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )
静态成员函数归属 : 在 C++ 类中 , 静态成员函数 是一种 特殊的函数 , 该函数属于类 , 而不是属于 类实例对象 ;
韩曙亮
2023/10/15
1.6K0
【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )
c++模板:调用模板成员函数需不需要加template关键字?
以下是个简单的模板类测试代码,模板类A中定义了模板函数hello,在模板函数test中调用A::hello template_test.cpp
10km
2022/04/13
1.1K0
c++模板:调用模板成员函数需不需要加template关键字?
c++之模板函数-模板
函数模板的作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。
西西嘛呦
2020/08/26
1.5K0
C++ 模板(template) 的定义
模板(template)是实现代码重用机制的一种工具,它可以实现类型参数化,把类型定义为参数(模板元编程),从而实现了真正的代码可重用性。
风骨散人Chiam
2020/10/28
1.5K0
C++ 静态数据成员与静态成员函数
本文介绍了静态数据成员和静态成员函数的概念、特点以及用法,并给出了一个示例代码。静态数据成员和静态成员函数是C++中比较重要的概念,在开发中经常用到。
chaibubble
2018/01/02
1.5K0
C++类的静态数据成员和静态成员函数
一些类对象可能会具有一些相同的属性,如果用普通数据成员来描述这些相同的属性,这意味着我们需要给每个对象的这个数据成员设定相同的值,如果改变类对象相同的属性,那么意味着我们需要对它们统一操作,这就有可能出现它们的值会不一样的情况,如果用全局变量来描述它们相同的属性,就会破坏类的独立性。
叶茂林
2023/07/30
2130
C++之const成员函数
由于const函数的隐藏参数this指针变成了const 类名*this,所以const函数不能修改类的数据成员的值,但可以使用类的数据成员。
zy010101
2020/04/08
9290
C++函数模板(模板函数)详解
大家好,又见面了,我是你们的朋友全栈君。 C++函数模板(模板函数)详解 定义 用法: 函数模板的原理 延申用法 2.1为什么需要类模板 2.2单个类模板语法 2.3继承中的类模板语法 案例1: 案例2: 2.4类模板的基础语法 2.5类模板语法知识体系梳理 1.所有的类模板函数写在类的内部 复数类: 2.所有的类模板函数写在类的外部,在一个cpp中 2.5总结 关于类模板的几点说明: 2.6类模板中的static关键字 案例2:以下来自:C++类模板遇上static关键字 2.7类模板在项目开发中的
全栈程序员站长
2022/07/22
1.9K0
C++函数模板(模板函数)详解
C++静态成员变量和静态成员函数小结
静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员需要在类外定义(初始化),而不应该被放在类声明中。 原因是类声明中只是描述如果分配内存并不会真正的分配内存,而定义是一定要分配
用户1215536
2018/02/05
1.9K0
静态成员函数访问非静态数据成员【C++】
详解:由于静态数据成员属于本类的所有对象共享,不属于特定类对象,因此在未产生类对象时作用域就可见,即:在未产生类的实例时,就可以对它进行操作。
攻城狮杰森
2022/06/03
1.3K0
【C++】C++ 类中的 this 指针用法 ② ( 常量成员函数 | const 修饰成员函数分析 )
在 C++ 类中 , 普通的非静态成员函数 , 可以使用 const 进行修饰 ,
韩曙亮
2023/10/15
2370
【C++】C++ 类中的 this 指针用法 ② ( 常量成员函数 | const 修饰成员函数分析 )

相似问题

成员函数的C++模板专门化

14

c++模板部分专门化成员函数

31

c++模板类成员函数专门化

33

C++ -专门化类模板的成员函数

14

C++ -专门化模板类的成员函数

48
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文