Boost logo

Boost Users :

From: arno.schaefer_at_[hidden]
Date: 2004-10-06 04:13:50


> Yes, that occurs if you have a
>
> using namespace std;
>
> statement in your code, and you are using Microsoft Visual C++ 6 (it's
> actually a compiler bug).
>
> Removing (or possibly moving until after all your includes, or just
> re-ordering your includes) the using statement will fix the issue.
>

Thanks very much for that hint John,
I found two places in our header which are using the "using namespace std;".
After I have switched that to the explicit "using" statements I could also
switch back to your default "user.hpp".

Perhaps I can ask one more question about this strange behaviour, just
because I want to understand why:
I try to use my own string class, which is inherited from std::string.
Defining "VC6_STUPID_BEHAVIOUR" in the example code below compile and run
the code successfuly, using the expanded name leads to following compiler
error:
        error C2614: 'MyCString' : illegal member initialization: 'string'
is not a base or member

You know WHY??? Also because of the same compiler error in VC6 or is there
something else wrong.
On Solaris and HP-UX it works fine in every combination.

// vvvvvvvvvvvvvvv snipp vvvvvvvvvvvvvvvv
#include <string>
#include <iostream>

#ifdef VC6_STUPID_BEHAVIOUR
        using std::string;
# define std_string string
#else
# define std_string std::string
#endif

class MyCString
        : public std_string
{
        public:
                MyCString(const char *s_);
                        : std_string(s_)
                {
                        std::cout << "\"" << *this << "\"" << std::endl;
                };
};

int main (int argc, char *argv[])
{
        MyCString s(argv[0]);
        return 0;
}
// ^^^^^^^^^^^^ snipp ^^^^^^^^^^^^



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net