【问题标题】:swig: make c++ objects printable in perl?swig:让 c++ 对象在 perl 中可打印?
【发布时间】:2015-02-15 22:34:00
【问题描述】:

我正在使用 SWIG 为我的 c++ 类创建 perl 绑定。每个类在 C++ 中都有一个 printMe(std::ostream&) 方法,以获得良好的输出。我可以让我的类在 Perl 中可打印,这样下面的代码就会产生这样好的输出吗?

my $v = new MyVector();
print $v;

【问题讨论】:

    标签: c++ perl swig


    【解决方案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;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2019-03-24
    • 2012-09-11
    • 2011-03-06
    • 1970-01-01
    • 2019-04-26
    相关资源
    最近更新 更多