从bug_report_view.cc和bug_report_view.h重构,我将send_report()
,report_phishing()
,其他一些小函数和BugReport::Cleanup
解压缩为bug_report.cc和{ {3}}(我的版本)。现在编译,我得到:
[...]bug_report.cc:196: error: no matching function for call to ‘URLFetcher::URLFetcher(std::wstring&, URLFetcher::RequestType, BugReport::PostCleanup*)’ ../chrome/browser/net/url_fetcher.h:136:
note: candidates are: URLFetcher::URLFetcher(const URLFetcher&) ../chrome/browser/net/url_fetcher.h:82:
note: URLFetcher::URLFetcher(const GURL&, URLFetcher::RequestType, URLFetcher::Delegate*)
由于某种原因,BugReport::PostCleanup
(在我的版本中)不被识别为URLFetcher :: Delegate的子类,但是BugReportView::PostCleanup
(在第一个链接中)是。那我在哪里陷入困境?感谢。
答案 0 :(得分:3)
问题不在于PostCleanup类的类型。问题是URLFetcher类构造函数的第一个参数的类型。构造函数需要GURL&,您传递的std::wstring
名为post_url
。您需要在两者之间执行某种转换。可能这样的事情是合适的:
GURL post_url(l10n_util::GetString(IDS_BUGREPORT_POST_URL));
URLFetcher* fetcher = new URLFetcher(post_url, URLFetcher::POST,
new BugReport::PostCleanup);
在您修改过的代码中,该类有一个GURL成员,它在构造函数中初始化,您已将其更改为仅在该函数中引用的变量,但更改了类型。
答案 1 :(得分:0)
目前:
URLFetcher* fetcher = new URLFetcher(post_url, URLFetcher::POST,
new BugReport::PostCleanup);
它无法找到一个URLFetcher构造函数thzat接受你给它的参数 - 问题可能在url_fetcher.h中,你没有显示。
顺便说一下,你的代码中还有很多其他问题和不良做法 - 尽快发起完整的代码审查是一个好主意。答案 2 :(得分:0)
第一个版本使用成员变量post_url_ second只是局部变量post_url 请描述什么是GURL类型 - 它是std :: wstring上的typedef或其他类型。