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

Radosław Kintzi radek w rakin.eu.org
Śro, 8 Cze 2005, 12:45:30 CEST


Paweł Sikora wrote:

>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;
>                  }
>  };
>  
>
Serdeczme dzięki.

Czy ktoś wie jak w gcc włączyć jakiś tryb zgodności z VC++. Albo
inaczej: do jakiego standardu najbardziej zbliżone jest VC++ i jak go
włączyć w gcc?

Mam kilka błędów w stylu tych powyżej, lub np:

for (int i=0; i<N; i++) {

}
for(i=0; i<N;i++) {

}
error: name lookup of `i' changed for new ISO
   `for' scoping
error:   using obsolete binding at `i'

Kod który przerabiam jest dość pokaźny, a szef się niecierpliwi, więc
może by mi to trochę pomogło.

Pozdr,



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