Bugzilla – Bug 123
SetInterfaceId is too easy to forget
Last modified: 2008-07-01 13:32:21 UTC
if you want to implement a new subclass of the Object base class which provides a new InterfaceId, you need to make sure you call SetInterfaceId from your object's constructor but it is too easy to forget this which results in very-hard-to-debug problems.
Created attachment 101 [details] Add CreateObject to create subclasses of the Object base class The new CreateObject method introduced here calls SetInterfaceId directly, hence making the extra call to SetInterfaceId from an object's constructor useless.
I hate the fact that this ruins my python bindings. :-( I have a suggestion: why not make the Object::Object constructor require an InterfaceId argument, and make this base constructor call AddInterfaceId? This way if you forget the InterfaceId you get a compile time error, and it's easy to fix the code.
(In reply to comment #2) > I hate the fact that this ruins my python bindings. :-( I am willing to make a patch for your bindings to ease integration of this patch. Would you mind explain what exactly in this patch makes the automatically-generated bindings cry ? > I have a suggestion: why not make the Object::Object constructor require an > InterfaceId argument, and make this base constructor call AddInterfaceId? This > way if you forget the InterfaceId you get a compile time error, and it's easy > to fix the code. The problem with the approach you suggest is that it is going to require you to propagate the interface id from a subclass up to the base class: if there are 2 or 3 intermeditate classes, this is a lot of work. Another problem is that this patch is the base of a larger set of patches which aim at improving/adding features to the Object framework.
fixed by ns-3-object