swig:让 c++ 对象在 perl 中可打印?
Posted
技术标签:
【中文标题】swig:让 c++ 对象在 perl 中可打印?【英文标题】:swig: make c++ objects printable in perl? 【发布时间】:2015-02-15 22:34:00 【问题描述】:我正在使用 SWIG 为我的 c++ 类创建 perl 绑定。每个类在 C++ 中都有一个 printMe(std::ostream&)
方法,以获得良好的输出。我可以让我的类在 Perl 中可打印,这样下面的代码就会产生这样好的输出吗?
my $v = new MyVector();
print $v;
【问题讨论】:
【参考方案1】:从你在这里写的,可能不是。看起来printMe()
方法实际上将格式化的字符串发送到输出流,这不是那么有用。你需要的是一个创建字符串然后返回它的方法,所以它可以被传递到 Perl 级别,然后作为参数提供给 Perl 的 print
内置函数。
如果有返回合适字符串形式的 C++ 方法,您需要阅读 perldoc overload
以了解如何更方便地使用它。
【讨论】:
制作这个to_string
方法很简单:std::ostringstream strm; printMe(strm); return strm.str();
问题是我找不到我应该重载的确切内容,因此 perl 可以理解 print $v;
构造。
字符串化操作符。类似use overload '""' => \&to_string;
以上是关于swig:让 c++ 对象在 perl 中可打印?的主要内容,如果未能解决你的问题,请参考以下文章
使用 SWIG (AIX 5.1) 从 Perl 调用 C++ 库时崩溃
swig c++ to perl : 如何使用 c++11 字符串 STL 函数