Using strings as arguments

The engine.
Post Reply
jdtoellner
Posts: 71
Joined: Mon Aug 01, 2016 9:45 pm

Using strings as arguments

Post by jdtoellner »

This works (for creating a node).

Code: Select all

string nodeId = "NewNode";
nodeHandle = theNet.AddNode(DSL_CPT, nodeID.c_str());
This doesn't (for creating a submodel).

Code: Select all

string submodelID = "NewSubmodel";
submodelHandle = theNet.GetSubmodelHandler().CreateSubmodel(DSL_MAIN_SUBMODEL, submodelID.c_str());
I get "argument of type "const char *" is incompatible with parameter of type "char*".

I have to do something like this:

Code: Select all

string submodelIDString = "NewSubmodel";
char * submodelID;
submodelID = new char[submodelIDString.length() + 1];
strcpy(submodelID, submodelIDString.c_str());
Should I be able to pass a string variable to the CreateSubmodel method (appended with "c_str" of course)?
shooltz[BayesFusion]
Site Admin
Posts: 1417
Joined: Mon Nov 26, 2007 5:51 pm

Re: Using strings as arguments

Post by shooltz[BayesFusion] »

The 2nd argument to CreateSubmodel method is char *. It should be const char * instead. To work around this issue, use const_cast or C-style cast. Both are safe; CreateSubmodel does not write into the memory pointed by the submodel id.

Code: Select all

submodelHandle = theNet.GetSubmodelHandler().CreateSubmodel(DSL_MAIN_SUBMODEL, const_cast<char *>(submodelID.c_str()));

Code: Select all

submodelHandle = theNet.GetSubmodelHandler().CreateSubmodel(DSL_MAIN_SUBMODEL, (char *)submodelID.c_str());
Post Reply