mardi 17 novembre 2020

How to make a common reusable function with different class types to reduce the code duplication using C++

I am invoking the below function from different classes and files like as shown below. And the implementation is almost similar. But it is initializing in the respective class constructor.

Can I create a common function for the below code for all the classes and then when invoking, based on the class can I initialize and return the object?

Below is the function with almost similar implementation for all the classes. And I have this similar implementation in around 10 places.

Could someone please suggest me the better approach to create a common reusable function?

1.

shared_ptr<CTestOneImpl> COneImpl::createTestObject(const string& f_strSFID, short f_nID,
                                                        bool f_bIsVerified,
                                                        bool f_bIsProcessed)
{
shared_ptr<CTestOneImpl> l_pTestObj = nullptr;
l_pTestObj = make_shared<CTestOneImpl>(f_nID, f_strSFID,
                                                    f_bIsVerified, f_bIsProcessed,
                                                    this);
 return l_pTestObj;
}
    shared_ptr<CTestTwoImpl> CTwoImpl :: createTestObject(string f_hStrSFID, long f_nID,
                                                              bool f_bIsVerified,
                                                              bool f_bIsProcessed)
    {
    shared_ptr<CTestTwoImpl> l_pTestObj = nullptr;
    l_pTestObj = make_shared<CTestTwoImpl>(f_nID, f_hStrSFID, f_bIsVerified
                                                    , f_bIsProcessed, this);
    return l_pTestObj;
    }
    
      shared_ptr<CTestThreeImpl> CThreeImpl ::createTestObject(const string& f_strSFID,
                                                           const string& f_nID,
                                                           bool f_bIsVerified,
                                                           bool f_bIsProcessed)
      {
      shared_ptr<CTestThreeImpl> l_pTestObj = nullptr;
      l_pTestObj = make_shared<CTestThreeImpl>(f_nID,
                                                    f_strSFID,
                                                    f_bIsVerified,
                                                    f_bIsProcessed,
                                                    this);
      return l_pTestObj;
      }
      

      Aucun commentaire:

      Enregistrer un commentaire