C++未定义对名称空间中函数的引用

2 c c++ namespaces function

这困扰了我一段时间.我有一个命名空间,在该命名空间中我想声明C风格的函数.所以我做了我认为正确的事:

namespace test
{
    std::deque<unsigned> CSV_TO_DEQUE(const char* data);
    std::deque<unsigned> ZLIB64_TO_DEQUE(const char* data, int width, int height);

    std::string BASE64_DECODE(std::string const& encoded_string);
}
Run Code Online (Sandbox Code Playgroud)

然后为实现文件:

#include "theheaderfile.hpp"

using namespace test;

std::deque<unsigned> CSV_TO_DEQUE(const char* data)
{
     ...
}
std::deque<unsigned> ZLIB64_TO_DEQUE(const char* data, int width, int height)
{
     ...
}

std::string BASE64_DECODE(std::string const& encoded_string)
{
     ...
}
Run Code Online (Sandbox Code Playgroud)

但是,当试图实际调用函数时,我得到一个未定义的引用错误.文件链接,所以我不确定为什么引用是未定义的.

我还要补充一点,如果我将这些函数从test命名空间中取出并将它们保留在全局命名空间中,它们的工作顺利进行.

我想避免在标题中定义函数.这可能吗?

Chr*_* W. 10

using namespace 将仅导入命名空间以供使用 - 它不允许您定义该命名空间中的函数.

您仍然需要在测试命名空间内定义函数:

namespace test {
    // your functions
};
Run Code Online (Sandbox Code Playgroud)


4pi*_*ie0 5

像这样定义:

std::deque<unsigned> test::CSV_TO_DEQUE(const char* data)
{
     ...
}
Run Code Online (Sandbox Code Playgroud)

否则这只是全局命名空间中的一个新函数