繁体   English   中英

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

[英]C++ template with no template parameters?

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

是否可以创建没有模板参数的模板,而仅仅是为了使类能够在头文件中定义而又不违反C ++ 11中的“一个定义规则”?

完全不需要模板。

如果要编写仅标头的类,则要做的就是将要在类声明外部定义的函数标记为inline

#pragma once

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

    inline void explicitly_inline();
};

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

偶尔使用额外的inline关键字几乎不会改变整个类的定义。

是否可以创建没有模板参数的模板

不,您不需要这种解决方法,因为...

使类可以在头文件中定义而不会违反“一个定义”规则

您可以在头文件中定义一个类,而不会违反“一个定义规则”。

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

程序中的内联函数定义可能不止一个,只要每个定义出现在不同的翻译单元中即可。 例如,可以在包含在多个源文件中的头文件中定义内联函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM