[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