我有一个 SWIG 包装的向量。我怎么知道它包含哪种类型?
Posted
技术标签:
【中文标题】我有一个 SWIG 包装的向量。我怎么知道它包含哪种类型?【英文标题】:I have a SWIG-wrapped vector. How can I tell which type it contains? 【发布时间】:2017-02-28 17:05:51 【问题描述】:在我的.i
文件中,我有很多这样的矢量模板:
%template(VectorInt) std::vector<int>;
我需要获取这些向量之一,并构造一个该向量包含的任何类型的实例。
我知道我可以获取向量的类型,并使用我对命名约定的了解来计算出与所需类型相同的字符串,并从中调用构造函数。
我不能指望向量不为空。
有没有更可靠的方法来获取这些信息?
【问题讨论】:
没有什么能阻止你拥有一个 boost::any 的向量,它有一个类型映射,这意味着向量的每个元素都有不同的类型。我想你真的想用 Python 写鸭子。 @Flexo 这一次让我很高兴我不能使用 Boost。 【参考方案1】:如果向量已经有元素,则从任何元素中获取类型信息。
否则,你可以在vector上调用resize
,得到你需要的,然后再调用clear
。
【讨论】:
以上是关于我有一个 SWIG 包装的向量。我怎么知道它包含哪种类型?的主要内容,如果未能解决你的问题,请参考以下文章