1

我正在为我的项目使用 OpenCV 库,并为我的源文件使用命名空间“cv”和“std”。我想使用字符串拆分函数根据分隔符拆分字符串。但“拆分”函数默认为命名空间“cv”并显示与错误参数相关的错误,因为它需要与 OpenCV slpit 函数相关的参数。

可以做些什么来克服这个问题?我看到相同的函数在另一个源文件中运行良好,即使该源文件同时具有 std 和 cv anmespace。

这些是我在两个文件中都包含的标题 -

#include "stdafx.h"
#include <unordered_map>
#include <iostream> // for standard I/O
#include <fstream>
#include <string>   // for strings
#include <iomanip>  // for controlling float print precision
#include <sstream>  // string to number conversion
4

4 回答 4

10

避免在代码中放置using namespace std;using namespace cv;,尤其是在标题中。
如果您无法阻止自己,请完全限定您需要的功能,例如

std::split(...)
于 2013-08-05T18:28:17.963 回答
2

只要cvandstd函数的参数集不相交,就不应在重载解析中引入任何歧义(两者都将被注入全局命名空间)。

根据评论显示split来自 2013 年的提案,更有可能是您的编译器尚未实现std::split

于 2013-08-05T18:32:24.060 回答
0

您可以通过使用显式命名空间说明符来克服这个问题。

std::split
于 2013-08-05T18:31:26.937 回答
0

您需要做的就是在函数前面加上它的命名空间例如

std::split(...);
于 2013-08-05T18:28:37.867 回答