Я использую Visual Studio в моем SLn существуют некоторые проекты: Общие, Трейдергде добавить переопределения оператора << для перечислений
В Common я имею в пространстве имен Helper
namespace Helper{
template<T>
class Print{
template<T>
static PrintEnum(std::ostream &os, const std::string& prefix,const T& val){
os << prefix << ":" << val;
}
};
}
и в проекте Трейдера класса Печати существуют некоторые перечислений в файле Typedef.h, как показано ниже:
namespace Market{
enum Coin{USD,JPY,EUR};
}
и существует функция печати в классе платформы, как показано ниже:
namespace Market{
void Platform::PrintTheBest(std::ostream &os){
Coin best = USD;
Helper::Print::PrintEnum(os, std::string("Best"),best);
}
}
Я хочу, чтобы переопределить < < для печати перечислений монет, как показано ниже:
std::ostream& operator<<(std::ostream& , const Coin& coin){
.....
}
Но я не знаю, где, чтобы добавить код оператора.
В общем проекте монеты перечисление не существует, а если добавить оператор в проекте Trader я получаю ошибку ссылки unresolve внешнего
Не писать такой код на C++, это Java-ism. Ваши функции 'static' должны быть функциями вне классов. Это также позаботится о вашей проблеме определения оператора потоковой передачи. –
Является ли определение вашего оператора внутри пространства имен Market? Число рейнольдса предыдущий комментарий: если статические методы принадлежат классу, они должны быть определены в этом классе, чтобы закодировать в общем объектно-ориентированном виде (за исключением операторов, которые по общему соглашению определены в способе herzl). Но это зависит от предпочтений кодера. – dwn
Кроме того, если вы добавляете его в .h, он должен быть встроенным. – dwn