Westerland
Gebruiker
- Lid geworden
- 27 jun 2011
- Berichten
- 286
Goedemiddag,
Ik zat met het volgende probleem.
Bij het entrypoint van een deel van de code maak ik een pointer aan van het type SquareObject (wordt geinit als NULL).
[cpp]
//maya command entrypoint. nee heb de naam doIt niet verzonnen xD
MStatus RoomCommand::doIt(const MArgList& args)
{
MStatus status;
SquareObject *objectInstance = NULL;
status = argParser(args,&createValue,objectInstance);
}
[/cpp]
Vervolgens verstuur ik deze pointer naar een methode waar die gezet wordt op basis van argumenten.
FieldOfInterest en RoomObject erven over van SqaureObject.
[cpp]
MStatus RoomCommand::argParser(const MArgList& args, int *objectCreation, SquareObject *objectInstance){
bool createCommandFound = false;
flagIndex = args.flagIndex(fieldFlag,fieldLongFlag);
//if fieldFlag has been found
if (MArgList::kInvalidArgIndex != flagIndex)
{
createCommandFound = true;
objectInstance = dynamic_cast<SquareObject*>(FieldOfInterest::getInstance());
*objectCreation = 1;
}
flagIndex = args.flagIndex(roomFlag,roomLongFlag);
//if roomFlag has been found
if (MArgList::kInvalidArgIndex != flagIndex)
{
createCommandFound = true;
objectInstance = dynamic_cast<SquareObject*>(RoomObject::getInstance());
*objectCreation = 2;
}
//check for null pointer
if (objectInstance == NULL)
{
MGlobal::displayError("Nullpointer found at -> RoomCommand::ArgParser at objectInstance");
return MS::kFailure;
}
//overige dingen die niet relevant zijn ??
//einde overige dingen
DEBUG(MString() + (int)objectInstance);
DEBUG("RoomCommand::argParser -> completed");
return status;
}
[/cpp]
de laatste regel van de methode argParser print voordat die returned nog even de pointer af van objectInstance. dit doet die netjes.
maar wanneer ik objectInstance wil gebruiken in de hierboven genoemde methode is die null:
[cpp]
MStatus RoomCommand::doIt(const MArgList& args)
{
MStatus status;
SquareObject *objectInstance = NULL;
status = argParser(args,&createValue,objectInstance);
//dit print 0 uit.
DEBUG(MString() + (int)objectInstance);
}
[/cpp]
Iemand een idee ??
Ik zat met het volgende probleem.
Bij het entrypoint van een deel van de code maak ik een pointer aan van het type SquareObject (wordt geinit als NULL).
[cpp]
//maya command entrypoint. nee heb de naam doIt niet verzonnen xD
MStatus RoomCommand::doIt(const MArgList& args)
{
MStatus status;
SquareObject *objectInstance = NULL;
status = argParser(args,&createValue,objectInstance);
}
[/cpp]
Vervolgens verstuur ik deze pointer naar een methode waar die gezet wordt op basis van argumenten.
FieldOfInterest en RoomObject erven over van SqaureObject.
[cpp]
MStatus RoomCommand::argParser(const MArgList& args, int *objectCreation, SquareObject *objectInstance){
bool createCommandFound = false;
flagIndex = args.flagIndex(fieldFlag,fieldLongFlag);
//if fieldFlag has been found
if (MArgList::kInvalidArgIndex != flagIndex)
{
createCommandFound = true;
objectInstance = dynamic_cast<SquareObject*>(FieldOfInterest::getInstance());
*objectCreation = 1;
}
flagIndex = args.flagIndex(roomFlag,roomLongFlag);
//if roomFlag has been found
if (MArgList::kInvalidArgIndex != flagIndex)
{
createCommandFound = true;
objectInstance = dynamic_cast<SquareObject*>(RoomObject::getInstance());
*objectCreation = 2;
}
//check for null pointer
if (objectInstance == NULL)
{
MGlobal::displayError("Nullpointer found at -> RoomCommand::ArgParser at objectInstance");
return MS::kFailure;
}
//overige dingen die niet relevant zijn ??
//einde overige dingen
DEBUG(MString() + (int)objectInstance);
DEBUG("RoomCommand::argParser -> completed");
return status;
}
[/cpp]
de laatste regel van de methode argParser print voordat die returned nog even de pointer af van objectInstance. dit doet die netjes.
maar wanneer ik objectInstance wil gebruiken in de hierboven genoemde methode is die null:
[cpp]
MStatus RoomCommand::doIt(const MArgList& args)
{
MStatus status;
SquareObject *objectInstance = NULL;
status = argParser(args,&createValue,objectInstance);
//dit print 0 uit.
DEBUG(MString() + (int)objectInstance);
}
[/cpp]
Iemand een idee ??
Laatst bewerkt: