У меня есть класс перечисления Suit и я определил строку функции to_string(Suit e)
В другом классе, Card, у меня есть переменная-член my_Suit и функция-член to_string. Эта функция вызывает функцию to_string с параметром my_Suit.
При компиляции получаю ошибку, что компилятор (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);
}