[C++-sig] init< LPCTSTR > error if used in static member of same class
AdrianB
adrian.baetu at plato-ag.com
Wed Feb 23 12:27:25 CET 2011
Anny Idea why following situation failes to compile?
class A
{
public:
A( LPCTSTR szParam ){};
~A(){};
};
class B: public A
{
public:
B( LPCTSTR szParam ) A(szParam){};
~B(){};
static void includePyModuleDefinition();
};
void B::includePyModuleDefinition()
{
class_<B>("MyB", init< LPCTSTR >() );
}
Compiler result is:
error C2275: 'LPCTSTR' : illegal use of this type as an expression
c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(391) :
see declaration of 'LPCTSTR'
error C2059: syntax error : ')'
The eonly way to solve this issue by now are:
- use no_init => not an option for me because I need the parameter
- move the static member function out of the class B => unhappy because this
would be a breach of my codeing std. for this module
- remove the class inheritance for B to 'public A'
The problem arises only if following three facts come togather:
1) inheritance from a base class
2) the includePyModuleDefinition() is a static member of the exposed class
iteself
3) the init has to tale at least one param
Regards,
Adrian
More information about the Cplusplus-sig
mailing list