[OT] C++ - Przekazywanie obiektów przez referencje (VC++ vs GCC)

Paweł Sikora pluto w agmk.net
Śro, 8 Cze 2005, 12:03:44 CEST


Radosław Kintzi wrote:
> Przenoszę kod VC++ na Linuksa i mam taką zagwózdkę:
> 
> try.cpp:
> --- cut here ---
> class CElem {
>         public:
>                 int i;
> };
> 
> class CArray {
>         CElem array[10];
>         int n;
>         public:
>                 CArray(){
>                         n=0;
>                 }
>                 void add (CElem &a){
>                         array[n]=a;
>                 }
> };
> 
> main() {
>         CArray a;
>         CElem e=CElem();
>         a.add(e);           // tu działa
>         a.add(CElem());     // a tu nie działa
> }
> --- cut here ---
> 
> $ gcc try.cpp
> try.cpp: In function `int main()':
> try.cpp:22: error: no matching function for call to `CArray::add(CElem)'
> try.cpp:13: error: candidates are: void CArray::add(CElem&)
> 
> 
> W VC++ działało bez problemu. Czy szanowni grupowicze mogą powiedzieć
> skąd ta różnica i jak jej zaradzić? Muszę wszędzie zmieniać kod?
> 

--- try.cpp.orig        2005-06-08 12:01:59.000000000 +0200
+++ try.cpp     2005-06-08 12:02:10.000000000 +0200
@@ -10,7 +10,7 @@
                  CArray(){
                          n=0;
                  }
-                void add (CElem &a){
+                void add (const CElem &a){
                          array[n]=a;
                  }
  };




Więcej informacji o liście dyskusyjnej pld-users-pl