How to implementing com interface?



 DEVELOP > c-Plus-Plus > How to implementing com interface?

LINK TO THIS PAGE  


rating :  0   |  0


  Page 1 of 1

1

 
Topic: DEVELOP > c-Plus-Plus
User: "kscho"
Date: 16 Sep 2003 01:13:42 AM
Object: How to implementing com interface?
Hi~
i wanna implement like COM interface, but I have problem pass this pointer.
How can i pass this pointer in C ?
How can i pass this pointer in CPP (thus not occured error)?
//_______ test1.cpp _______________________________________
#include <stdio.h>
extern "C" void main_test();
class ITest {
public:
virtual void ftn(int pParam) = 0;
virtual void ftn222(int pParam) = 0;
};
class Test:public ITest{
public:
virtual void ftn(int pParam);
virtual void ftn222(int pParam);
int a;
};
// error occurs because this pointer passing
void Test:: ftn(int pParam){
a = 10; // this makes error, error occurs the time of access member
valuable
printf("ftn test\n");
}
void Test:: ftn222(int pParam){
printf("ftn test222\n");
}
extern "C" ITest *createTest(void){
return new Test();
}
extern "C" void deleteTest(void * pTest){
delete (Test*)pTest;
}
int main(int argc, char* argv[]){
main_test();
return 0;
}
//_______test2.c _______________________________
#include <stdio.h>
typedef struct I_XX {
void ( __stdcall *ftn ) (int );
void ( __stdcall *ftn222 ) (int );
} I_XX;
typedef struct XX{
const struct I_XX *lpVtbl;
}XX;
extern void *createTest(void);
extern void deleteTest(void * pTest);
void main_test()
{
XX* p = (XX*)createTest();
p->lpVtbl->ftn(10);
p->lpVtbl->ftn222(20);
deleteTest(p);
}
i'm referenced basetype.h
/** basetype.h
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
#if defined(__cplusplus) && !defined(CINTERFACE)
define THIS void
#else
#define THIS INTERFACE FAR * This
#endif
**/
thanks in advance,
cho.
.

User: "Rob Williscroft"

Title: Re: How to implementing com interface? 16 Sep 2003 06:01:18 AM
kscho wrote in news:bk66l1$9s2$1@news1.kornet.net:

i wanna implement like COM interface, but I have problem pass this
pointer.

Your code has a compiler specific dependancies ( e.g. __stdcall and
the way you assume stuff about the layout of vtables ). Standard C++
doesn't even assume the existance of vtables, any mechanism which
does the job is OK.
You need to ask this in a compiler specific newsgroup or possibly
a COM specific newsgroup.
Look for a group's starting with comp.os.ms-windows.programmer.*
and microsoft.public.* ( you may need to use microsoft's news server
to post to these, so the comp... ones may be prefered).
HTH
Rob.
--
http://www.victim-prime.dsl.pipex.com/
.


  Page 1 of 1

1

 


Related Articles
 

NEWER

pg.1232     pg.940     pg.716     pg.544     pg.412     pg.311     pg.234     pg.175     pg.130     pg.96     pg.70     pg.50     pg.35     pg.24     pg.16     pg.10     pg.6     pg.3     pg.1

OLDER