[英]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.