Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Three questions

Author: Bo Persson

Date: 03:02:13 11/09/02

Go up one level in this thread


On November 09, 2002 at 04:44:14, Sune Fischer wrote:

>First Question:
>I want to support some variants of chess, mostly fischer-random.
>For this I need a member function pointer to point to a member function.
>I must have the syntax wrong cause the compiler complains, this is what I do:
>
>class BOARD {
>public:
>  void (*pGenCastleMoves)();  // is this correct declaration?

Here is your problem: A pointer to member must be declared as a pointer to
member of a specific class. You do this by using not just a *, but a
classname::* construct.

Try this line as

void (BOARD::* pGenCastleMoves)();


>  void GenNormalCastleMoves();
>  void GenFischerCastleMoves();
>...
>}
>
>I try and intialise it by:
>
>void GAME::SetNormal() {
>  variant=NORMAL;
>  Chessboard.pGenCastleMoves=Chessboard.GenNormalCastleMoves;
>}
>
>Where GAME is a different class that controls settings for the entire game, like
>the variant. It doesn't work though, I get:
>
>error C2440: '=' : cannot convert from 'void (__thiscall BOARD::*)(void)' to
>'void (__cdecl *)(void)'
>        There is no context in which this conversion is possible
>

See, the compiler tries to hint at BOARD::* !  :-)


The other two questions are beyond me...

Bo Persson
bop2@telia.com



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.