I really don't like smart pointers, automatic reference counting and everything related to it.
Please explain with this example, is it possible to do so?
Standard example:
- Code: Select all
CefRefPtr<CefStringVisitor>my_CefStringVisitor_get_html_ptr;
void OnLoadEnd(CefRefPtr< CefBrowser >browser, CefRefPtr<CefFrame>frame, int httpStatusCode) override
{
CefRefPtr<CefFrame> my_CefFrame = (*browser).GetMainFrame();
my_CefStringVisitor_get_html_ptr = new my_get_html();
(*my_CefFrame).GetSource(my_CefStringVisitor_get_html_ptr);
}
class my_get_html : public CefStringVisitor
{
public:
void Visit(const CefString& my_cstring) override
{
//std::cout << "Visit_done" << std::endl;
}
private:
IMPLEMENT_REFCOUNTING(my_get_html);
};
Can it be done like this? :
- Code: Select all
std::deque<CefStringVisitor>my_deq_CefStringVisitor_p;
void OnLoadEnd(CefRefPtr< CefBrowser >browser, CefRefPtr<CefFrame>frame, int httpStatusCode) override
{
CefRefPtr<CefFrame> my_CefFrame = (*browser).GetMainFrame();
CefStringVisitor* CefStringVisitor_p = new my_get_html();
my_deq_CefStringVisitor_p.push_back(CefStringVisitor_p );
(*my_CefFrame).GetSource(my_deq_CefStringVisitor_p.back());
}
class my_get_html : public CefStringVisitor
{
public:
void Visit(const CefString& my_cstring) override
{
//std::cout << "Visit_done" << std::endl;
}
};
void OnBeforeClose(CefRefPtr<CefBrowser>my_CefBrowser_ptr) override
{
for(int i=0; i<my_deq_CefStringVisitor_p.size(); i++)
{
delete my_deq_CefStringVisitor_p[i];
}
}