我环顾四周,试图找到这个问题的答案。是否可以在 cpp 文件内的命名空间中定义模板类的成员函数?当我尝试执行此操作时出现错误。
这是我尝试编译的两个文件。
ArrayList.hpp
template<typename T>
class ArrayList{
ArrayList();
~ArrayList();
}
ArrayList.cpp
#include "ArrayList.hpp"
namespace{
template<typename T>
ArrayList<T>::ArrayList(){
/* function body goes here */
}
ArrayList<T>::~ArrayList(){
/* function body goes here */
}
编译器错误
error: cannot define or
redeclare 'ArrayList<T>' here because namespace '' does not enclose
namespace 'ArrayList'
ArrayList<T>::ArrayList()
最佳答案
您需要在定义其成员函数的同一命名空间中声明您的类。
您缺少 template<typename T>
在你的析构函数之前。
namespace ANamespace
{
template<typename T>
class ArrayList
{
ArrayList();
~ArrayList();
};
template<typename T>
ArrayList<T>::ArrayList()
{
/* function body goes here */
}
template<typename T>
ArrayList<T>::~ArrayList()
{
/* function body goes here */
}
}
关于c++ - 在命名空间中定义模板类成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44837670/