我的程序遇到了一个奇怪的问题。所以在标题中我得到了这样的东西:
#ifndef SET1_INCLUDED
#define SET1_INCLUDED
#include <iostream>
using namespace std;
typedef std::string ItemType;
class Set1{
public:
------some public constructor and method in here-------
private:
ItemType setMember[100];
}
在Set1.cpp文件中我的函数的一部分我有这样的东西:
if (setMember[i] == "foo") {exist = true;}
在这种情况下,我收到一条错误消息,上面写着&#34;没有找到哪个操作符带有类型&#39; ItemType&#39;的左手操作数。 &#34 ;.但是,如果我将typedef中的std :: string更改为int或unsigned long,并更改&#34; foo&#34;对于一些随机数,代码完美无缺。有什么建议吗? THX
答案 0 :(得分:8)
您缺少标题文件<string>
,这意味着您的程序中没有可见的所有全局operator ==
定义。这可能是你的问题。
要解决此问题,请尝试在此行中添加:
#include <string>
希望这有帮助!
答案 1 :(得分:1)
您需要包含字符串头文件以将相对类型和运算符引入范围。
#include <string>
注意: 从头文件中的std命名空间中提取所有内容是不好的编码实践。
//using namespace std;