【发布时间】:2014-07-03 23:26:25
【问题描述】:
我正在使用 VS Express 2013 试图编译一个 c++ 项目。我创建了一个带有一些功能的模板类。该类及其函数都在一个头文件中。我已经包含了这个文件,我已经使用了这个类,我已经从中调用了函数,尽管 Visual Studio 不会编译我没有使用的类的函数。我已经关闭了所有优化。我是否必须使用我编写的函数来查看它是否编译?
函数如下:
void remove(ID id)
{
sdfgsdfg456456456456sfdsdf
}
该函数不应编译。如果我确实使用这个函数,项目确实不会编译,但如果我不使用这个函数,项目将编译,即使我使用这个类中的其他函数。
有解决办法吗?如果我在 .cpp 文件中实现该功能,会发生同样的事情吗?
编辑:我没有提到它是一个模板类。我已经在其中添加了该信息。
【问题讨论】:
-
你是在调试配置中编译,还是在发布配置中编译?
-
在发布配置中。
-
在调试配置中编译时会发生同样的事情吗?
-
那就是答案;除非某些东西实际引用它,否则不会实例化模板代码。显然,当你实例化一个模板类时,它只会实例化你使用的成员函数(我可以重现这个)。
-
@user1594138 请更新您的问题以反映现实。在这方面,模板函数的工作方式与普通函数非常不同。您还应该清楚地说明您的代码在哪个文件中,因此毫无疑问您的代码是否分布在许多文件中,以及代码是否在您实际使用/包含的头文件中。
标签: c++ visual-studio templates visual-studio-2013