首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有模板参数的C++模板?

没有模板参数的C++模板?
EN

Stack Overflow用户
提问于 2015-10-29 23:21:53
回答 2查看 222关注 0票数 1

我讨厌这种样板,不要重复C++中传统类声明中固有的违规行为。

在C++11中,有没有可能创建一个没有模板参数的模板,纯粹是为了在不违反One Definition规则的情况下在头文件中定义类?

EN

回答 2

Stack Overflow用户

发布于 2015-10-29 23:29:15

不需要任何模板。

如果你想写一个只有头的类,你所要做的就是将定义在类声明外部的函数标记为inline

代码语言:javascript
复制
#pragma once

struct some_class {
    void implicitly_inline() { ... }

    inline void explicitly_inline();
};

void some_class::explicitly_inline() { ... }

偶尔额外的inline关键字几乎不会成为更改类的整个定义的负担。

票数 2
EN

Stack Overflow用户

发布于 2015-10-29 23:29:26

是否可以创建不带模板参数的模板

不是的。你不需要这样的变通方法,因为...

允许在不违反One Definition规则的情况下在头文件中定义类

您可以在头文件中定义类,而不会违反One Definition Rule。

您甚至可以在header中定义类的成员函数--我认为这就是这个问题的重点。只需将它们全部声明为inline。如果在类定义中定义成员函数,则它们是隐式内联的。

程序中可能存在内联函数的多个定义,只要每个定义出现在不同的翻译单元中。例如,一个内联函数可能定义在多个源文件中的#include'd头文件中。

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

https://stackoverflow.com/questions/33418214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档