[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