我想创建一小组类来封装HTML内容。 例如,我需要这样的东西:
struct Document
{
...
std::string content;
Document& operator<<(Element const& elem)
{
content += elem();
return *this;
}
};
,例如:
struct Href
{
...
std::string operator()() const
{
return "<a>example</a>";
}
}
和
struct Div
{
...
std::string operator()() const
{
return "<div></div>";
}
}
我知道pimpl成语 - 以及对象切片。 但有没有办法创建一些类似于存档的思想:
...
Document doc;
doc << Href << Div;
或者我误解了什么?
答案 0 :(得分:1)
或者我误解了什么?
嗯,你的面向流的方法根本不代表像HTML这样的分层文档(它的新形式可以是XML方言);你会怎样建模,让我们说一个div里面的一个链接,一个div之后的链接?
我不知道这里的pimpl成语是如何适用的;它不会帮助您将分层格式转换为线性形状。你有一些方法;例如,您可以将()
重载为HTML元素类的基本类型的参数以实现层次结构,但除此之外还有问题:
您已经通过定义实际包含详细类(&#34; impl&#34;)应该执行的操作符来打破它。
Pimpl强迫您更清楚地区分API和功能;没有什么可以帮助你使用文档生成器。