[libavg-devel] Dynamic Node Creation Enhancements

Ulrich von Zadow uzadow at libavg.de
Fri Feb 15 12:50:17 CET 2008


Ulrich von Zadow wrote:
> Nick Hebner wrote:
>> On Wed, Feb 13, 2008 at 1:27 PM, Ulrich von Zadow <uzadow at libavg.de> wrote:
>>
>>> Hi,
>>>
>>> I need a bit of time to look this over, because I still think it should
>>> work. Member variables of base classes never move in derived classes
>>> (even with multiple inheritance), as long as you always use a pointer to
>>> the base class. For simple single inheritance, the pointer to an object
>>> shouldn't change either in a cast from base to derived class and back.
>>> offsetof(), while technicaly undefined, _should_ work for these objects
>>> in all sane implementations of C++ (For discussions of this, see
>>> http://gcc.gnu.org/ml/gcc/2003-11/msg00279.html and
>>> http://carcino.gen.nz/tech/cpp/multiple_inheritance_this.php).
>> Hmm, ok you clearly know much more about it than I do, so I'll leave it to
>> you.
> 
> Not that much more - I just used google ;-). The second link explains 
> object layout in memory very well.
> 
>>> It might take a moment for me to get around to it, though, so getting
>>> the first patch into svn would be great.
>> Great. Would you like me to submit another patch to the list, or just commit
>> it?
> 
> Just commit it :-).

Um - I see you've done that, and now I get:

[...]
  g++ -DHAVE_CONFIG_H -I. -I. -I../../src -I.. -I/usr/include/libxml2 
-I/Users/uzadow/libavg/include/freetype2 -I/Users/uzadow/libavg/include 
-I/Users/uzadow/libavg/include/pango-1.0 -I/Users/uzadow/libavg/include 
-I/Users/uzadow/libavg/include/freetype2 
-I/Users/uzadow/libavg/include/glib-2.0 
-I/Users/uzadow/libavg/lib/glib-2.0/include 
-I/System/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5 
-I/Users/uzadow/libavg/include -I/Users/uzadow/libavg/include/ffmpeg 
-I/Users/uzadow/libavg/include 
-I/Users/uzadow/libavg/include/GraphicsMagick 
-I/Users/uzadow/libavg/include -O3 -g -Wall -pipe -MT CameraNode.lo -MD 
-MP -MF .deps/CameraNode.Tpo -c CameraNode.cpp  -fno-common -DPIC -o 
.libs/CameraNode.o
Words.cpp: In static member function 'static avg::NodeDefinition 
avg::Words::getNodeDefinition()':
Words.cpp:89: error: 'class avg::ChildMap' has no member named 'at'
Words.cpp:105: error: 'class avg::ChildMap' has no member named 'at'
[...]

This is Mac OS X Leopard, gcc 4.0.1. As far as I can see by quickly 
searching the web, std::map::at() is not part of the standard, so you 
should probably use std::map::find()->second. On which plattform does 
this compile?

Cheers,

   Uli

-- 

Ulrich von Zadow | +49-172-7872715
Jabber: cocacoder at jabber.berlin.ccc.de
Skype: uzadow



More information about the libavg-devel mailing list