0

嗨,我正在将此函数写入我的 help.h 文件中。

这是我的 help.h 文件

#ifndef help_H
#define help_H

#include <iostream>
#include <string>
#include <tr1/array>

class help {

    public:
    template<std::size_t N>
    static std::string to_string( std::tr1::array<char, N> const& arr);

};

#endif

这是我的 .cpp 文件

#include "help.h"

template<std::size_t N>
std::string help::to_string( std::tr1::array<char, N> const& arr)
{
    const char* str = reinterpret_cast<const char*>(arr.data());
    return std::string( str, str+N );
}

我想知道哪一部分是错的?当我编译时,它说:

mpic++ -o local help.cpp globalVar.cpp Graphnode.cpp move.cpp ioCheckFile.cpp mySearch.cpp ods_v3.cpp -L/opt/local/lib/  -lboost_iostreams-mt -lz -I/opt/local/include
Undefined symbols for architecture x86_64:
  "std::string help::to_string<16ul>(std::tr1::array<char, 16ul> const&)", referenced from:
      mySearch::bfs(Graphnode, std::tr1::array<char, 16ul>, char, std::queue<Graphnode, std::deque<Graphnode, std::allocator<Graphnode> > >&) in mySearch-ekZOo8.o
      mySearch::dfs(Graphnode, std::tr1::array<char, 16ul>, char, std::queue<Graphnode, std::deque<Graphnode, std::allocator<Graphnode> > >, std::queue<Graphnode, std::deque<Graphnode, std::allocator<Graphnode> > >, std::tr1::array<std::tr1::unordered_map<std::string, char, std::tr1::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, char> >, false>, 2000ul>) in mySearch-ekZOo8.o
      _main in ods_v3-580g0A.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [local] Error 1
4

0 回答 0