<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><div>Hi All:<br><br>I have a windows application using MFC to create an optimized portfolio of common stock.  I used the cpp example as a template and derived my class from TNLP.  The difference between my implementation and that in the example is that I have many new members and a few more functions (to access data in databases ) etc.<br><br>When I try to compile this, the compiler complains that the new data members are not part of the TNLP class.  For example some of the error messages are below:<br><br>rojects\bmopt\bmopt\createcase.cpp(262) : error C2039: 'm_caseFileName' : is not a member of 'Ipopt::TNLP'<br>1>        c:\optdir\iptnlp.hpp(48) : see declaration of 'Ipopt::TNLP'<br>1>c:\documents and settings\kris\my
 documents\projects\bmopt\bmopt\createcase.cpp(264) : error C2039: 'm_assetBoundsDB' : is not a member of 'Ipopt::TNLP'<br>1>        c:\optdir\iptnlp.hpp(48) : see declaration of 'Ipopt::TNLP'<br>1>c:\documents and settings\kris\my documents\projects\bmopt\bmopt\createcase.cpp(265) : error C2039: 'm_assetBoundsTable' : is not a member of 'Ipopt::TNLP'<br>1>        c:\optdir\iptnlp.hpp(48) : see declaration of 'Ipopt::TNLP'<br>1>c:\documents and settings\kris\my documents\projects\bmopt\bmopt\createcase.cpp(267) : error C2039: 'm_assetReturnDB' : is not a member of 'Ipopt::TNLP'<br>1>        c:\optdir\iptnlp.hpp(48) : see declaration of 'Ipopt::TNLP'<br><br><br><br><span style="font-weight: bold;">But this is not right, and these members are present in the derived class</span>.  I declare the smart pointer
 thus:<br><br>    SmartPtr<TNLP> p_optdata;<br>and instantiate it as p_optdata = new COpt() where COpt is the derived class from TNLP.<br><br>Is there some other way I should treat this derived class?  If any more information is needed, please let me know?  <br><br><span style="font-weight: bold;">I even tried SmarPtr<COpt> p_optdata</span>.  The compiler does not like this.  The complaints about the new data members are gone. but instead I get<br><br>1>c:\documents and settings\kris\my documents\projects\bmopt\bmopt\bmoptdoc.cpp(105) : error C2664: 'Ipopt::IpoptApplication::OptimizeTNLP' : cannot convert parameter 1 from 'Ipopt::SmartPtr<T>' to 'const Ipopt::SmartPtr<T> &'<br>1>        with<br>1>        [<br>1>           
 T=COpt<br>1>        ]<br>1>        and<br>1>        [<br>1>            T=Ipopt::TNLP<br>1>        ]<br>1>        Reason: cannot convert from 'Ipopt::SmartPtr<T>' to 'const Ipopt::SmartPtr<T>'<br>1>        with<br>1>        [<br>1>            T=COpt<br>1>        ]<br>1>        and<br>1>        [<br>1>            T=Ipopt::TNLP<br>1>       
 ]<br>1>        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called<br><br><span style="font-weight: bold;">I guess this is because oc the const declaration.</span><br style="font-weight: bold;"><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;">Any way I can solve this issue?  This is the very last part of my implementation, and any help would be appreciated.</span><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;">Thanks in advance</span><br><br>Krish<br><br></div></div><br>
      </body></html>