我有不同的类,它们都按层次结构排列。
为了减少代码量,我开始创建模板函数。基类将使用模板函数,而某些派生类也将使用相同的函数。我应该将所有这些模板放在哪里,以免出现像以前一样的未定义引用问题?我应该将所有定义放在头文件中,然后仅将该头文件包含在调用函数的类的.cpp部分中。那行得通吗?截至目前,我所有的类(class.cpp,class.h)都可以正常编译,但是在链接过程中所有内容都会崩溃。我试图将所有模板放在一个 namespace 中,然后在所有类的实现中都包含该 namespace ,但这似乎不起作用。我的问题是,您将如何制作一个单独的实体,该实体仅包含任何类都可以在其数据成员上使用的模板化函数?

最佳答案

我看到很多人对此事感到困惑……模板不是类型。
它们在实例化时成为类型。
因此,模板成员必须保留在要使用它们的同一数据单元中。

如果您的模板是通用的,并且想在所有代码中使用它,则只需将所有内容放在头文件中即可。

现在,如果您不喜欢(而且我会理解)在同一文件中显示所有声明,定义和实现,则可以将模板拆分为两个不同的文件。

例如,声明中包含“list.h”,实现中包含“list.inc”。

为了使其工作,您必须同时包括两者。

10-02 01:18
查看更多