cristiano250 Temat założony przez niniejszego użytkownika  | 
» 2012-11-03 21:59:49 OK, tylko kiedy ostream i istream są na zewnątrz to kompilator z kolei wyrzuca mi to: |error: new declaration 'std::ostream& operator<<(std::ostream&, Wektor3&)'| |error: ambiguates old declaration 'std::ostream operator<<(std::ostream&, Wektor3&)'|  | 
 | 
DejaVu  | 
» 2012-11-03 22:07:35 ... dostałeś rozwiązanie, które kompiluje się pod GCC, a Ty dalej walczysz z wiatrakami?  | 
 | 
cristiano250 Temat założony przez niniejszego użytkownika  | 
» 2012-11-03 22:09:09 problem w tym, że nie kompiluje... może ja nie widze tego rozwiazania...  | 
 | 
cristiano250 Temat założony przez niniejszego użytkownika  | 
» 2012-11-03 22:22:42 TO JEST MÓJ PROGRAM NA CHWILĘ OBECNĄ: #include <cstdlib> #include <cmath> #include <iostream> #include <iomanip> #include <ostream>
  using namespace std; using std::cout; using std::cin;
 
 
 
 
 
  class Wektor3 {      public:     Wektor3( void );     Wektor3( double x, double y, double z );     Wektor3( const Wektor3 & w );          double X( void ) { return _x; }     double Y( void ) { return _y; }     double Z( void ) { return _z; }          Wektor3 & Assign( double x, double y, double z );     Wektor3 & operator =( const Wektor3 & w );          double operator !( void );     double Azym( void );     double Elev( void );          Wektor3 & operator +=( const Wektor3 & w );     Wektor3 & operator *=( double k );          friend Wektor3 operator +( const Wektor3 & w1, const Wektor3 & w2 );     friend Wektor3 operator *( double k, const Wektor3 & w );     friend Wektor3 operator *( const Wektor3 & w, double k );          friend bool operator ==( const Wektor3 & w1, const Wektor3 & w2 );     friend bool operator !=( const Wektor3 & w1, const Wektor3 & w2 );           private:     double _x, _y, _z; }; ostream operator <<( ostream & s, Wektor3 & w ); istream operator >>( istream & s, Wektor3 & w );
 
 
 
  ostream & operator <<( ostream & s, Wektor3 & w ) {     return s; }
  istream & operator >>( istream & s, Wektor3 & w ) {     return s; }
  Wektor3::Wektor3( void ) {     _x = _y = _z = 0.0; }
 
  Wektor3::Wektor3( double x, double y, double z ) {     _x = x; _y = y; _z = z; }
 
  Wektor3::Wektor3( const Wektor3 & w )
  {     _x = w._x;     _y = w._y;     _z = w._z; }
 
  Wektor3 & Wektor3::Assign( double x, double y, double z ) {     _x = x; _y = y; _z = z;          return * this; }
 
  Wektor3 & Wektor3::operator =( const Wektor3 & w )
  {     _x = w._x;     _y = w._y;     _z = w._z;     return * this; }
 
  double Wektor3::operator !( void )
  {     long double dlugosc;     dlugosc = sqrt(( _x * _x ) +( _y * _y ) +( _z * _z ) );     return dlugosc; }
 
  double Wektor3::Azym( void )
  {     double azymut;     azymut = acos( _x / sqrt(( _x * _x ) +( _y * _y ) ) );     if( - 180 < azymut && azymut <= 180 )          return azymut;      }
 
  double Wektor3::Elev( void )
  {     double elewacja;     elewacja = asin( _z /( sqrt(( _x * _x ) +( _y * _y ) +( _z * _z ) ) ) );     if( - 90 <= elewacja && elewacja <= 90 )          return elewacja;      }
 
  Wektor3 & Wektor3::operator +=( const Wektor3 & w )
  {     _x += w._x;     _y += w._y;     _z += w._z;     return * this; }
 
  Wektor3 & Wektor3::operator *=( double k )
  {     _x *= k;     _y *= k;     _z *= k;     return * this; }
 
  Wektor3 operator +( const Wektor3 & w1, const Wektor3 & w2 )
  {     Wektor3 suma( w1._x + w2._x, w1._y + w2._y, w1._z + w2._z );     return suma; }
 
  Wektor3 operator *( double k, const Wektor3 & w )
  {     Wektor3 iloczynliczba(( w._x ) * k,( w._y ) * k,( w._z ) * k );     return iloczynliczba; }
 
  Wektor3 operator *( const Wektor3 & w, double k )
  {     Wektor3 iloczynliczba( k *( w._x ), k *( w._y ), k *( w._z ) );     return iloczynliczba; }
 
  bool operator ==( const Wektor3 & w1, const Wektor3 & w2 )
  {     bool wektory_sa_rowne = 0;     if( w1._x == w2._x && w1._y == w2._y && w1._z == w2._z )          wektory_sa_rowne = 1;          return wektory_sa_rowne; }
 
  bool operator !=( const Wektor3 & w1, const Wektor3 & w2 )
  {     bool wektory_nie_sa_rowne = 0;     if( w1._x != w2._x || w1._y != w2._y || w1._z != w2._z )          wektory_nie_sa_rowne = 1;          return wektory_nie_sa_rowne; }
 
  int main( int argc, char * argv[] ) {     Wektor3 w1( 1, 2, 3 );     Wektor3 w3, w4, w5;     double ax, ay, az, k;          cout << "Wektor w3 (x, y, z): ";                    cin >> w3;          cout << "Wektor w4 (x, y, z): ";                    cin >> w4;     cout << "Wspolczynnik k: ";     cin >> k;          Wektor3 w31( w3 );          cout << fixed << setprecision( 3 ) << endl;                              cout << "Wektor w1 = " << w1 << endl;     cout << "Wektor w3 = " << w3 << endl;     cout << "Kopia  w3 = " << w31 << endl;     cout << "Wektor w4 = " << w4 << endl << endl;                    w5 = w3;     w5 += w4;               cout << "Wektor w3+w4 = " << w5 << endl;               w5 = w1 + w3;               cout << "Wektor w1+w3 = " << w5 << endl << endl;                    w5 = w3;     w5 *= k;               cout << "Wektor k*w3 = " << w5 << endl;               w5 = k * w4;          cout << "Wektor k*w4 = " << w5 << endl;     w5 = w3 * k;          cout << "Wektor w3*k = " << w5 << endl << endl;               cout << "Modul w3 = " << !w3 << endl;          cout << "Azymut w3 = " << w3.Azym() << endl;     cout << "Elewacja w3 = " << w3.Elev() << endl << endl;                    cout << "w3==w4 " <<(( w3 == w4 ) ? "tak"         : "nie" ) << endl << endl;     cout << "w3!=w4 " <<(( w3 != w4 ) ? "tak"         : "nie" ) << endl << endl;          return 0; }
   | 
 | 
cyklopek11  | 
» 2012-11-03 22:24:14  |error: new declaration 'std::ostream& operator<<(std::ostream&, Wektor3&)'| |error: ambiguates old declaration 'std::ostream operator<<(std::ostream&, Wektor3&)'|
 
 To znaczy że: nowa implementacja std::ostream & operator <<( std::ostream &, Wektor3 & );
  występuje obok starej deklaracji: std::ostream operator <<( std::ostream &, Wektor3 & );
  WIDZISZ TO ???  | 
 | 
cristiano250 Temat założony przez niniejszego użytkownika  | 
» 2012-11-03 22:33:08 czyli tego ma nie byc ?
  ostream operator <<( ostream & s, Wektor3 & w ); istream operator >>( istream & s, Wektor3 & w );  | 
 | 
cristiano250 Temat założony przez niniejszego użytkownika  | 
» 2012-11-03 23:33:00 pozostałe operatory są dobrze zdefiniowane? bo program nie działa tak jak powinien...  | 
 | 
crash  | 
» 2012-11-04 00:04:54 ...
  private: double _x, _y, _z; };
 
 
 
 
 
  ostream & operator <<( ostream & s, Wektor3 & w ) { return s; }
  istream & operator >>( istream & s, Wektor3 & w ) { return s; } ...
  Czytaj co pisze kompilator: new declaration 'std::ostream& operator<<(std::ostream&, Wektor3&)' friend Wektor3 operator +( const Wektor3 & w1, const Wektor3 & w2 );
  Po co 'zaprzyjaźniony' sam ze sobą?  | 
 | 
| 1 « 2 »  3 |