Topic: OSpace STL<Toolkit> sort with non-builtins
Author: annkim@juicer.magna.com.au (Ann Kim)
Date: 1995/08/02 Raw View
Hi
Sorry, if this isn't the right place to post (I've also posted
to comp.lamg.c++) but I've seen a few STL-related questions here
so ....
We are using STL<Toolkit> from ObjectSpace with MSVC2.1 on WinNT3.5.
When I tried to use the sort algorithm with a user-defined type the
compiler behaved strangely!
The following code in a .cpp file causes the compiler to give the error,
G:\tools\ospace\ospace/stl/advalgo.cpp(1477) : error C2227:
left of '->__dtor' must point to class/struct/union
#include <stl.h>
class Foo
{
public:
Foo() {};
Foo(int i) {m_Foo = i;}
~Foo() {};
const Foo& operator=(const Foo& f) {m_Foo = f.m_Foo; return *this;}
int m_Foo;
};
bool operator>(const Foo &f1, const Foo & other) {return f1.m_Foo > other.m_Foo;}
bool operator<(const Foo & f1, const Foo & other) {return f1.m_Foo < other.m_Foo;}
bool operator==(const Foo & f1, const Foo & other) {return f1.m_Foo == other.m_Foo;}
void
main()
{
vector<Foo> v;
v.push_back(6);
v.push_back(1);
v.push_back(4);
sort(v.begin(), v.end());
}
Commenting out the destructor makes this error go away (and the code to work).
Substituting trivial class Foo usage with another (less trivial) class which
doesn't have a destructor explicity declared/defined still causes the same
error to occur. Substituting with class string (implemented here but
essentially the Plauger "standard string" class) works fine! (string has
a destructor).
Initially we thought the problem could be related to the fact that class Foo
had a destructor. Classes string and another class which both have destructors
confirm that this behaviour is not consistent.
Has anyone had similar experiences and/or can shed some light? (PLEASE?)
Thanks in advance.
Ann
------------------------------------------------------------------------
Ann Kim The Chifley Tower
Analyst/Programmer 2 Chifley Square
Derivatives Technology Sydney 2000 NSW Australia
Bankers Trust Australia Limited ph: +612 2599378
fax: +612 2599486
e-mail: annkim@magna.com.au
"Les opinions exprimees ici me sont personnelles et n engagent
pas le BT Australia Limited."
------------------------------------------------------------------------