Я прошёл через наследие и нашел следующий синтаксис C ++ странным:
определение класса выглядит следующим образом:
class thread_shared : public master
{
public:
thread_shared()
{
thread_id = 0;
}
int thread_id;
std::string title;
std::string (*text2html)(std::string const &); // What's this declaration?
};
и определение text2html как:
namespace {
std::string text2html(std::string const &s)
{
std::string tmp=cppcms::util::escape(s);
std::string res;
res.reserve(tmp.size());
for(unsigned i=0;i<tmp.size();i++) {
if(tmp[i]=='\n') {
res+="<br />";
}
res+=tmp[i];
}
return res;
}
}
, а затем использование, которое:
c.id = 1; // any integer
c.title = "some string";
c.text2html = text2html; // whats this??
где c
- это экземпляр класса thread_shared
, объявленного выше.
Как указано выше, кто-то может объяснить мне заявление, например:
std::string (*text2html)(std::string const &);
, а затем c.text2html = text2html;
что именно делает код выше?