我有一个枚举类“Suit”并定义了一个函数“string to_string(Suit e)”
在另一个类“Card”中,我有一个成员变量“my_Suit”和一个成员函数“to_string”。此函数以“my_Suit”作为参数调用函数“to_string”。
在编译时,我得到一个错误,编译器 (g++) 正在寻找函数“Card::to_string(Suit&)”,但这个函数不存在(不在提到的范围内,“Card::”)。
错误状态:
错误:没有匹配函数调用'Card::to_string(Suit&)'</p>
候选人:std::__cxx11::string Card::to_string()
如何让编译器清楚他必须搜索在类外定义的函数?
这是一段在编译时给出错误的代码。实际上,代码分为几个头文件和源文件,但错误保持不变。
#include <iostream>
/******************** enum class Suit ********************/
enum class Suit
{
Clubs, Spades, Hearts, Diamonds
};
std::string to_string(Suit e)
{
return ("calling 'to_string' function with Suit as parameter");
}
/******************** clas Card ********************/
class Card
{
private:
Suit m_Suit;
public:
Card() { m_Suit = Suit::Clubs; }
std::string to_string()
{
return ( to_string(m_Suit) );
}
};
int main()
{
std::cout << "Hello world!\n";
return (0);
}