我只是对我的Map.cpp文件应该是什么样子感到困惑。
Map类中没有构造函数声明std::string作为参数。提供一个!
template <typename Domain, typename Range>
class Map
{
public:
Map(const std::string& filename); // declare one constructor which takes std::string
// ... other members
};
Run Code Online (Sandbox Code Playgroud)第三,您的成员函数定义缺少模板参数。
template <typename Domain, typename Range> // ---> this
void Map<Domain, Range>::add(Domain d, Range r)
{
// implementation
}
template <typename Domain, typename Range> // ---> this
bool Map<Domain, Range>::lookup(Domain d, Range& r)
{
// implementation
}
Run Code Online (Sandbox Code Playgroud)Map该类而言至关重要,因为new应该释放分配的内存(使用)。因此,请相应地执行3/5/0的规则。话虽如此,如果您可以使用std::vector,则可以避免手动内存管理。
#include <vector>
template <typename Domain, typename Range>
class Map
{
public:
//...
private:
// other members
std::vector<Domain> dArray;
std::vector<Range> rArray;
};
Run Code Online (Sandbox Code Playgroud)
作为旁注,请避免使用using namespace std;。
为什么是“使用命名空间标准”;被认为是不良做法?