【问题标题】:Improve the Swig-tcl wrapping of a make function改进 make 函数的 Swig-tcl 包装
【发布时间】:2015-03-24 12:45:09
【问题描述】:

当包装一个构造函数时:

struct A {
  A(){}
  void hello() {std::cout << "hello\n";}
};

Swig-tcl 太棒了!确实在 tcl 中我可以做到:

A a
a hello

但是,在某些情况下,对象 a 的创建并不简单(即我可能只想返回对堆上另一个对象的引用)并且必须通过 make 函数,例如:

A make(){ return A(); }

那么 Swig-tcl 的包装就变得一团糟:

set a [make]
$a hello

我想知道是否有办法在使用 make 函数时恢复 tcl 脚本的初始清晰度。

【问题讨论】:

    标签: c++ tcl swig


    【解决方案1】:

    我觉得不是特别乱!只是第二种情况下的命令有一个您无法控制的名称,因此您将名称保存在变量中。

    您可以重命名对象命令或为其创建别名:

    rename $a a
    
    interp alias {} a {} $a
    

    使用其中任何一种技术后,您将拥有一个名为a 的命令,您可以在该命令上调用方法。 但是, 在这两种情况下,如果您将对象作为参数传递给另一个 SWIGged 函数或方法,则需要 原始 名称。因此,我个人建议只使用名称在变量中的版本。

    您应该检查带有rename 的版本是否有效;有可能——尽管不太可能——它可能不会……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 2023-03-10
      • 1970-01-01
      • 2013-01-24
      • 2021-11-15
      • 1970-01-01
      相关资源
      最近更新 更多