.net 2003 compile error with 1.10 exgsopenglvectorizedevice.
.net 2003 compile error with 1.10 exgsopenglvectorizedevice.cpp
in the exgsopenglvectorizeview::rasterimageproc function is the following line:
odgiconveyorcontext* pctx = odgibasevectorizer::drawcontext();
which causes the following error:
dd_nonlibs\examples\exrender\win\exgsopenglvectori zedevice.cpp(367) : error c2248: 'odgiconveyorcontext' : cannot access inaccessible class declared in class 'exgsopenglvectorizeview'
\dd_nonlibs\include\gi\giconveyorgeometry.h(42) : see declaration of 'odgiconveyorcontext'
dd_nonlibs\examples\exrender\win\exgsopenglvectori zedevice.h(42) : see declaration of 'exgsopenglvectorizeview'
the fix is to use the scope operator. so, here抯 what the fixed line looks like:
:

dgiconveyorcontext* pctx = odgibasevectorizer::drawcontext();
here抯 part of the c2248 error description:
揟his error can also be generated as a result of compiler conformance work that was done for visual studio .net 2003: private base classes now inaccessible. a class (a) that is a private base class to a type (b) should not be accessible to a type (c) that uses b as a base class.?br />
if you follow the inheritance tree, exgsopenglvectorizeview is derived from odgibasevectorizer, which is derived from 損rivate odgiconveyorcontext?
thanks for posting this, i was having that compilation error in .net 2003 and still trying to get it fixed !!
dawson
hi all,
to fix it use next line:
odgiconveyorcontext* pctx = ::fff">odgibasevectorizer::drawcontext();
instead of:
odgiconveyorcontext* pctx = odgibasevectorizer::drawcontext();
i just tried that fix. it results in the same error. odgiconveyorcontext is what needs to be scoped.
use
::fff">odgiconveyorcontext* pctx = odgibasevectorizer::drawcontext();
instead of:
odgiconveyorcontext* pctx = odgibasevectorizer::drawcontext();
here抯 the example from .net 2003抯 description of the c2248 error code.
// c2248c.cpp
// compile with: /ld
struct a
{
};
struct b: private a
{
};
struct c: b
{
void f()
{
a *p1 = (a*) this; // c2248
::a *p2 = (::a*) this; // ok
}
};
adding odgibasevectorizer as friend seems to alleviate this one:
class odgiconveyorcontext
{
public:
friend class odgibasevectorizer;
virtual odgicontext& gicontext() const = 0;
virtual odgisubentitytraits& subentitytraits() const = 0;
virtual const odgisubentitytraitsdata& effectivetraits() const = 0;
virtual const odgidrawabledesc* currentdrawabledesc() const = 0;
virtual const odgidrawable* currentdrawable() const = 0;
virtual const odgiviewport* giviewport() const = 0;
virtual const odgsview* gsview() const = 0;
};