此问题在此处已有答案:
(13个答案)六年前关闭了。我在Visual Studio 2015中编写C++代码。我有两个文件,分别叫superpixel.h和superpixel.cpp。我想在一些函数中使用模板,但我读到不能在cpp文件中定义模板。我不想在头文件中定义模板,因为这只会让我的代码在头文件和cpp文件中的定义变得混乱。有什么办法可以解决这个问题吗?我必须把我所有的cpp文件都切换到hpp吗?
rxztt3cl1#
任何使用模板的东西都需要访问模板,这意味着它必须被包含。我所看到的大多数是把整个定义放到头文件中,尽管你可以把它移到其他文件中并包含它。如果你把你的头文件保持为每个类一个,希望不会那么混乱。你不需要把所有的cpp文件都转换成hpp文件。那些只是扩展,它们大多数都不重要。尽管你可能想考虑只在你的代码大部分是模板的时候使用header,因为模板代码无论如何都必须在header中,而只有header的项目通常更容易包含在其他项目中,因为你不必担心链接。
1条答案
按热度按时间rxztt3cl1#
任何使用模板的东西都需要访问模板,这意味着它必须被包含。我所看到的大多数是把整个定义放到头文件中,尽管你可以把它移到其他文件中并包含它。如果你把你的头文件保持为每个类一个,希望不会那么混乱。
你不需要把所有的cpp文件都转换成hpp文件。那些只是扩展,它们大多数都不重要。尽管你可能想考虑只在你的代码大部分是模板的时候使用header,因为模板代码无论如何都必须在header中,而只有header的项目通常更容易包含在其他项目中,因为你不必担心链接。