Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Keine implizite Wandlung in konstante Referenz?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.09.2006, 12:28 Uhr
Yadgar



High!

Noch ein Problem: in


C++:
// FixedArray: Testprogramm
// (fa.cpp)

#include <iostream>
using namespace std;

#include "fixedarray.h"
#include "more.h"

//-----------------------------------------------------------------------------------
//    isEqual (global)
//
bool isEqual(const FixedArray& lhs, const FixedArray& rhs)
{
  if (lhs.mDim != rhs.mDim) return false; // Felder ungleicher Dimension sind nie gleich
  
  for (int i=0; i<lhs.mDim; i++)
    if (lhs.mWert[i] != rhs.mWert[i]) return false;
  
  return true;
}

//------------------------------------------------------------------------------------
//    Operator == (global)
//
bool operator == (const FixedArray& lhs, const FixedArray rhs)
{
  return isEqual(lhs, rhs);
}

//------------------------------------------------------------------------------------
//    Operator != (global)
//
bool operator != (const FixedArray& lhs, const FixedArray rhs)
{
  return !isEqual(lhs, rhs);
}


int main()
{
   FixedArray::setLimit(100000000);

   FixedArray f1[10];
   FixedArray f2[12];

   // int i=5;
  
   // cout << "Element Nr. 5: " << f1[i] << endl;
   // cout << "Element Nr. 6: " << f1[6] << endl;
  
   [b]if (isEqual(f1, f2)) cout << "Gleich!" << endl;[/b]
   else cout << "Ungleich!" << endl;

}



bekomme ich für die fett angezeigte Zeile die Fehlermeldung

invalid initialization of reference of type 'const FixedArray&' from expression of type 'FixedArray*'

...wieso? Und warum ist in der Fehlermelung von einem Zeigertyp die Rede?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.09.2006, 12:39 Uhr
virtual
Sexiest Bit alive
(Operator)


f1 und f2 sind arrays und damit zuweisungskompatibel mit Zeigern.
Deine Funktion erwartet aber Referenzen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.09.2006, 12:59 Uhr
Th



Du meintest wahrscheinlich

C++:
FixedArray f1(10);
FixedArray f2(12);


beim Initialisieren?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.09.2006, 13:09 Uhr
Yadgar



High!


Zitat von Th:
Du meintest wahrscheinlich

C++:
FixedArray f1(10);
FixedArray f2(12);


beim Initialisieren?


Ja *anKopfklatsch*, natürlich! Ansonsten wäre es ja sozusagen ein zweidimensionales Feld...

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: