设计一个接受通用输出流作为参数的API
Designing an API to accept a generic output stream as a parameter
我正在使用LLVM库设计一个API,该库将接受输出流作为其构造函数参数之一。LLVM编码标准规定了以下内容:
使用raw_ostreamLLVM包含一个轻量级、简单、高效的流在llvm/Support/raw_ostream.h中实现,它提供了所有std::ostream的常见特性。所有新代码都应该使用Raw_ostream代替ostream
与std::ostream不同,raw_ostream不是模板,可以转发声明为类raw_ostream。公共头文件通常不应该这样做包括raw_ostream头文件,但使用前向声明和对raw_ostream实例的常量引用。
我必须遵守LLVM编码标准,所以我试图在构造函数中接受raw_ostream作为参数。我已经尝试通过引用和指针传递raw_ostream,但我在编译时收到以下错误消息:
注意:候选构造函数不可行:没有已知的转换"llvm:: raw_ostream和()","llvm:: raw_ostream和"…
我的构造函数应该是什么样子接受'llvm::raw_ostream &()'类型的参数?我想初始化这个输出流的类成员。
下面是我当前的代码:
构造函数MyClass(raw_ostream &OS) : OutputStream(OS) {}
调用者MyClass x = new MyClass(&outs);
outs
从这个链接的第665行开始记录
在LLVM源代码中有大量的例子,其中raw_ostream
是一个函数/方法参数。几乎都是(..., raw_ostream &OS, ...)
以下是CodeGen/AsmPrinter/AsmPrinter.cpp
的代表性示例:
static void emitComments(const MachineInstr &MI, raw_ostream &CommentOS) {
// ... code
}
相关文章:
- 如何在C++中编写 ostream 的向量,它接收所有不同的输出流,如 cout、ostringstream 和 ofs
- 在输出流中插入换行符
- 在类外部重载输入和输出流
- 通用容器的输出流
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 获取C++输出流中元素的大小
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 控制多线程程序中的输出流
- 如何传递unique_ptr<T>代替原始*输出*指针参数?
- 为什么输出流首选" "而不是""?
- C++ 输出流运算符 <<() 中的字符何时加宽?
- 音频缓冲区列表,用于输出流格式已压缩的 AUHAL 单元
- 如何将值发送到标准输出流并在另一个程序中访问这些值
- Can std :: make_unique将功能的输出作为参数
- 我必须如何将OpenCV输出流到我自己的远程C GUI
- 如何为提升日志和自定义类型定义输出流运算符
- 修改视频帧并将其发送回视频输出流
- 如何将 vector 传递给将自定义对象作为参数的重载输出流
- 设计一个接受通用输出流作为参数的API