【发布时间】:2020-05-11 12:00:31
【问题描述】:
我有一个枚举类“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&)'
候选人: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);
}
【问题讨论】:
-
仅供参考:Scope
标签: c++ compiler-errors scope name-lookup using-declaration