我可以从静态成员函数中调用非成员静态模板函数吗,其中定义被拆分为 header 和 cpp:
// zero.cpp
class Zero
{
static void zero() { one(5); }
};
// one.h
template <typename T>
static void one(T& var);
// one.cpp
template <typename T>
void one(T& var) { }
// main.cpp
...
Zero::zero()
...
我在链接时遇到问题,我不断收到对我试图在 one.cpp 中定义的函数的 undefined reference 。
最初我认为这是由于命名空间的问题,但现在所有文件都在同一个命名空间中。我在这里做错了什么吗?
最佳答案
模板定义需要在实例化时可见。也就是说,它需要以某种方式位于标题中:
// one.hpp
template <typename T>
static void one(T& var)
{
// definition visible in header
}
虽然我不确定您为什么希望它是静态的。
关于c++ - C++ 中的非成员静态模板方法定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4005823/