我正在为我的项目使用OpenCV库并使用命名空间" cv"和" std"对于我的源文件。我想使用字符串拆分功能根据分隔符拆分字符串。但是" split"函数默认为命名空间" cv"并且显示与错误参数相关的错误,因为它期望与OpenCV slpit函数相关的参数。
可以做些什么来克服这个问题?我看到同一个函数在另一个源文件中运行正常,即使那个函数同时有std和cv空间。
这些是我在两个文件中包含的标题 -
#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
答案 0 :(得分:10)
避免在代码中加入using namespace std;
和using namespace cv;
,尤其是在标题中。
如果您无法阻止自己,请完全符合您需要的功能,例如
std::split(...)
答案 1 :(得分:2)
只要cv
和std
函数的参数集是不相交的,就不应该在重载决策中引入任何歧义(两者都会被注入全局命名空间)。
基于显示split
来自2013年提案的评论,更有可能的是您的编译器尚未实现std::split
。
答案 2 :(得分:0)
您需要做的就是在函数前加上'命名空间' 例如
std::split(...);
答案 3 :(得分:0)
您可以通过使用显式名称空间说明符来解决此问题。
std::split