Class abstract type returning error

On 16/06/2014 at 03:45, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   14 
Platform:      Mac OSX  ; 
Language(s) :     C++  ;

---------
I changed the class type of my plugin from:

  
class cPolyPaintTool : public ToolData   

to

  
class cPolyPaintTool : public DescriptionToolData   

and now, the line:

return RegisterToolPlugin(ID_POLYPAINTTOOL, GeLoadString(IDS_POLYPAINTTOOL),PLUGINFLAG_TOOL_OBJECTHIGHLIGHT,AutoBitmap("icontool.tif"),GeLoadString(IDS_POLYPAINTTOOL_HELP), gNew cPolyPaintTool);
}

returns an error of "Allocating an object of abstract class type 'cPolyPaintTool'"

If I get back to ToolData, it builds fine.
What can I bo doing wrong?

On 16/06/2014 at 03:55, xxxxxxxx wrote:

You should also see information on what methods are missing an implementation

If you inherit from DescriptionToolData, you _must_ provide an implementation for

 virtual Int32 GetToolPluginId() = 0;
 virtual const String GetResourceSymbol() = 0;

See http://www.maxonexchange.de/sdk/CINEMA4DSDK/index.html

The = 0; part just means that there will be no implementation of this method
of the declaring class and makes the class abstract therefore.

Best,
-Niklas

PS: You may want to adjust the title, the topic isn't about plugin description files.

On 16/06/2014 at 04:08, xxxxxxxx wrote:

Isn't that for release 15? I'm using release 14 and it tells nothing about it in the SDK.

On 16/06/2014 at 04:13, xxxxxxxx wrote:

Anyway, it is working now, with this:

  
class cPolyPaintTool : public DescriptionToolData   
{   
public:   
        
          virtual LONG          GetToolPluginId() {return ID_POLYPAINTTOOL;}   
          virtual const String GetResourceSymbol() {return "ToolPolyPaintTool";}   
          virtual LONG          GetState(BaseDocument* doc);   
          virtual void          InitDefaultSettings(BaseDocument *doc, BaseContainer &data;);   
}

Thank you, Niklas.