2

プロジェクトをビルドしようとすると、次のエラーが発生します。

Angle.cpp:466: error: ambiguous overload for 'operator<<' in '(+out)-
>std::basic_ostream<_Elem, _Traits>::operator<< [with _Elem = char, 
_Traits = std::char_traits<char>](((const Angle*)this)->Angle::getDegrees())
<< "\37777777660"'

私はそれについていくつかの調査を行いましたが、メソッドヘッダーが間違っているように見えますが、cpp は初めてで、このエラーを修正する方法がわかりません。

.h は次のとおりです。

#include "OutputOps.h"
// End user added include file section

#include <vxWorks.h>
#include <ostream>
class Angle {

public:
// Default constructor/destructor
~Angle();

// User-defined methods
//
// Default Constructor sets Angle to 0.
Angle();
...
// Returns the value of this Angle in degrees.
double getDegrees() const;
....
// Prints the angle to the output stream as "x°" in degrees
void output(std::ostream& out) const;

...
private:
...
double radians;
static const double DEGREES_PER_RADIAN /* = 180.0 / PI */;    
};

#endif // ANGLE_H

そして、ここに方法があります:

#include "MathUtility.h"
#include <cmath>
// End user added include file section

#ifndef Angle_H
#include "Angle.h"
#endif

//
// Prints the angle to the output stream as "x°" in degrees
void Angle::output(std::ostream& out) const
{
    out << getDegrees() << "°";
}
//
// Returns the value of this Angle in degrees.
double Angle::getDegrees() const
{
return radians * DEGREES_PER_RADIAN;
}
4

1 に答える 1

2

私の推測では、問題はアスキー文字ではない度記号にあります。

代わりに試してください:

wcout <<  getDegrees() << L"\u00B0";
于 2012-07-17T13:12:42.010 に答える