Jonathan Polley wrote:
> 
> On Thursday, March 21, 2002, at 03:37 AM, Erik Hofman wrote:
> 
>      Jonathan Polley wrote:
> 
>           After getting SimGear to build under MSVC 6.0 (thanks Christian), I moved 
>on to getting all of FlightGear to build. For some reason, MSVC does not like JSBSim 
>(over 1200 errors generated) but I had no problem under RH 7.1 (as usual). I expect 
>that everything is a snow ball started from the errors in FGPropertyManager.h.
>           The full build result file can be found at:
>           http://homepage.mac.com/eq_fidget/FG_Dox/FlightGear.html
> 
>      It's just a matter of removing (*all*) the 'FGPropertyManager::' sections 
>within the class (or file).
> 
>      Erik
> 
> When I do that, it complains about the multiple definitions of 'Tie.' When it starts 
>failing the compile, it is on the second, and subsequent, definitions of 
>'FGPropertyManager::Tie.'
> 
> When I comment out *ALL* instances of 'Tie' (however you want to define it), I still 
>get a major explosion which makes absolutely NO sense:
> 
[snip]

You're right, it doesn't make any sense.  Perhaps you commented out too
much?

Anyways, I've managed to compile a recent FlightGear JSBSim.  The
problems I encountered seem to be that MSVC can not deduce which
overloaded member function to call:

Compiling...
FGAerodynamics.cpp
c:\src\flightgear\src\fdm\jsbsim\fgaerodynamics.cpp(229) : error C2661:
'Tie' : no overloaded function takes 4 parameters

Adding an ugly cast fixes the problem:

  PropertyManager->Tie("forces/fbx-aero-lbs", this,1,
    (double (FGAerodynamics::*)(int) const) &FGAerodynamics::GetForces);

A similar cast is required on every pointer to member function that
takes an index, probably because there is a similar named member
function that takes no index:

class FGAerodynamics : public FGModel {
...
  FGColumnVector3& GetForces(void) {return vForces;}
  inline double GetForces(int n) const {return vForces(n);}

On that note, since we are taking a pointer to a member function, the
compiler must emit a function body.  Thus the member function can't be
inline.  This may help decide which functions to inline.

Cheers,
Bernie

_______________________________________________
Flightgear-devel mailing list
[EMAIL PROTECTED]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel

Reply via email to