What is reason behind getting error of "object of abstract class type is not allowed" ?
-
When i am running the code at that time i am getting below error :
object of abstract class type "app::transaction::flow::CustomBootFlow" is not allowed
I want to know how to resolve it ?
#include "FlowFactory.h" #include "Transactions.h" #include "flows/Flows.h" namespace app { FlowFactory::FlowFactory() { appTransactionDefinition = new app::transaction::Transactions() ; } FlowFactory::~FlowFactory() { if (appTransactionDefinition!=NULL) delete appTransactionDefinition ; } boomer::transaction::flow::BaseFlow *FlowFactory::createFlowForTransactionType(const boomer::transaction::Transaction &tr) { if ((app::transaction::Transactions *)appTransactionDefinition->isBootTransaction(tr.id)) return new app::transaction::flow::CustomBootFlow(); return NULL; } }
-
@Qt-embedded-developer said in What is reason behind getting error of "object of abstract class type is not allowed" ?:
boomer::transaction::flow::BaseFlow *FlowFactory::createFlowForTransactionType(const boomer::transaction::Transaction &tr)
there are i have done 2 changes in 2 file:
1] flowfactory.h
public:
virtual boomer::transaction::flow::BaseFlow *createFlowForTransactionType(const boomer::transaction::Transaction &tr) ;2] CustomBootFlow.h
protected:
virtual void ConfigureOOB();
virtual boomer::transaction::TransactionResult InitializeEMVCTConfiguration();
virtual boomer::transaction::TransactionResult InitializeEMVCTLSConfiguration(); -
When i am running the code at that time i am getting below error :
object of abstract class type "app::transaction::flow::CustomBootFlow" is not allowed
I want to know how to resolve it ?
#include "FlowFactory.h" #include "Transactions.h" #include "flows/Flows.h" namespace app { FlowFactory::FlowFactory() { appTransactionDefinition = new app::transaction::Transactions() ; } FlowFactory::~FlowFactory() { if (appTransactionDefinition!=NULL) delete appTransactionDefinition ; } boomer::transaction::flow::BaseFlow *FlowFactory::createFlowForTransactionType(const boomer::transaction::Transaction &tr) { if ((app::transaction::Transactions *)appTransactionDefinition->isBootTransaction(tr.id)) return new app::transaction::flow::CustomBootFlow(); return NULL; } }
@Qt-embedded-developer
So it tells youapp::transaction::flow::CustomBootFlow
is an abstract class. Meaning you cannot instantiate directly from it (does yournew app::transaction::Transactions()
return aapp::transaction::flow::CustomBootFlow
?), it is designed for you to need to subclass from it, implement whatever pure virtual methods it has, and off you go.If you still don't understand Google for
C++ abstract class
. -
@Qt-embedded-developer said in What is reason behind getting error of "object of abstract class type is not allowed" ?:
boomer::transaction::flow::BaseFlow *FlowFactory::createFlowForTransactionType(const boomer::transaction::Transaction &tr)
there are i have done 2 changes in 2 file:
1] flowfactory.h
public:
virtual boomer::transaction::flow::BaseFlow *createFlowForTransactionType(const boomer::transaction::Transaction &tr) ;2] CustomBootFlow.h
protected:
virtual void ConfigureOOB();
virtual boomer::transaction::TransactionResult InitializeEMVCTConfiguration();
virtual boomer::transaction::TransactionResult InitializeEMVCTLSConfiguration();