SUPER:: - must be a class or namespace name..

On 10/06/2013 at 10:38, xxxxxxxx wrote:

User Information:
Cinema 4D Version:    
Platform:      
Language(s) :

---------
Hi, some plugins use this:

return SUPER::BlaBla_foo(x, y, z);

the hashmap.h uses this:

Super::ConstIterator::operator++();

but I can't. I get "name followed by '::' must be a class or namespace name"

I do use this:

ObjectAncestor::BlaBla_foo(x, y, z);

but I wonder how other can use SUPER / Super and to what extent it has any purpose / is better than just using the name of the ancestor.

On 10/06/2013 at 10:41, xxxxxxxx wrote:

SUPER is coming from this macro.
You can use it only if you have INSTANCEOF(Object,ObjectAncestor) in you class.

  
    
    
    	#define INSTANCEOF(X,Y)                  \n    		public:                                \n    			typedef Y SUPER;                     \n    		private:

> but I wonder how other can use SUPER / Super and to what extent it has any purpose / is better than just using the name of the ancestor.

Actually it is the same, just using some macro magic.

On 10/06/2013 at 10:55, xxxxxxxx wrote:

Thanks a lot!
I will stick to my usual way of doing things then.
In C# there is something called "Base" which is intrinsic so to say.

On 11/06/2013 at 03:16, xxxxxxxx wrote:

I suggest you to just use

class MyClass : public BaseClass {
  
public:
  
    typedef BaseClass SUPER;
  
};

instead. The INSTANCEOF macro is in my eyes nothing but confusing. I've also
never need to have it public, so you can usually skip that as well.

On 11/06/2013 at 04:49, xxxxxxxx wrote:

Why not use Super instate like hashmap?
Or even Base like in C# then ?  :)

  
    
    
    class MyClass : public BaseClass {
    
      
    
    
    public:
    
        typedef BaseClass Super;  
        typedef BaseClass Base;  
    
    
    };
  

On 11/06/2013 at 05:11, xxxxxxxx wrote:

Personally, I use the lower-case "super" (like Python, Java)

On 11/06/2013 at 08:26, xxxxxxxx wrote:

Yep, that's also my default typedef.

typedef BaseClass Base;