auto_ptr gcc version 3.3.1 (cygming special) problem

Rolf Campbell Endlisnis@mailc.net
Thu Jan 8 09:59:00 GMT 2004


#1) This is not a cygwin issue, so it's off-topic here.
#2) This is not even really a gcc issue, it's a C++ issue.
#3) The problem is that you are trying to use static_cast too much. It 
should only be used for built-in types (int, float, various pointers).
The older gcc seemed to allow incorrect use of static_cast, the new one 
requires you to use it right.
Just remove the static casts, and away we are:
int main(int argc, char *argv[])
{
 A a(1);
 auto_ptr<B> b = auto_ptr<B>(a.getB());
 A a2(2);
 auto_ptr<B> b2 = auto_ptr<B>(a2.getB());
 cin.get();
 return 0;
}
Or even:
int main(int argc, char *argv[])
{
 A a(1);
 auto_ptr<B> b(a.getB());
 A a2(2);
 auto_ptr<B> b2(a2.getB());
 cin.get();
 return 0;
}
Marcelo Rezende Módolo wrote:
> Hi,
> I am not shure that this is a error , but it is very strange...
>> //autoPtr.cpp
> #include <iostream>
> #include <memory>
> using namespace std;
>> class B {
> public:
> B(int cid) : cid_(cid) { cout << "B(" << cid_ << ")\n"; }
> ~B() { cout << "~B(" << cid_ << ")\n"; }
> private:
> int cid_; };
>> class A {
> public:
> A(int cid) : cid_(cid) { cout << "A(" << cid_ << ")\n"; }
> ~A() { cout << "~A(" << cid_ << ")\n"; } B* getB() { return new 
> B(cid_); }
> private:
> int cid_; };
>> int main(int argc, char *argv[])
> {
> A a(1);
> auto_ptr<B> b = static_cast< auto_ptr<B> >(a.getB());
> A a2(2);
> auto_ptr<B> b2 = static_cast< auto_ptr<B> >(a2.getB());
> cin.get();
> return 0;
> }
>> If I compile this file with gcc version 3.2.3 (mingw special 20030504-1) 
> no errors ocur (g++ -o autoPtr autoPtr.cpp).
> But if I try to compile using gcc version 3.3.1 (cygming special), with 
> the same command line (g++ -o autoPtr autoPtr.cpp),
> this errors ocur:
> autoPtr.cpp: In function `int main(int, char**)':
> autoPtr.cpp:26: error: invalid static_cast from type `B*' to type `
> std::auto_ptr<B>'
> autoPtr.cpp:29: error: invalid static_cast from type `B*' to type `
> std::auto_ptr<B>'
>> what is the problem??
>> thanks,
> marcelo
>>>
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /