|
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