Overloading struct members (or cast?)

Wsdes via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Nov 18 07:32:02 PST 2014


Hello again and welcome to another tale of mystery :)

I, again, am facing problems connecting my D program to the C API 
as seen in the callback thread before.

I want to write a callback function that is assigned to a struct 
member. The function should write data from members of another 
struct to the command line. Please consider my code:


    void MyCB(void* pVoid) {
      DataInfo_t* userData; //DataInfo_t is a struct
      userData = cast(DataInfo_t*) pVoid;

      writeln("Value: ", pMsgUserData.Values[i].value.string);
    }

Here the DataInfo_t struct has a member Values which itself is a 
struct. The programmer of the API called the members of the union 
inside the Values struct after simple data types or pointers to 
them, specifically

      union value {
           const char       *string;
      }

When I try to compile I get the following error:

            Error: need 'this' for 'string' of type 'const(char*)'

I'm not quite sure what the error wants to tell me. The way I see 
it is that there is some kind of problem with the instance of the 
struct and hence the reference to that specific member value does 
not work.

Any ideas?



More information about the Digitalmars-d-learn mailing list