gpt4 book ai didi

c++ - SWIG:公共(public)函数中使用的私有(private) typedef

转载 作者:行者123 更新时间:2023-11-30 03:08:29 25 4
gpt4 key购买 nike

我经常给我的类一个私有(private)类型定义来引用它们自己,如下所示:

class MyClass {
private:
typedef MyClass Self;
public:
void DeepCopyFrom(const Self& other);
...
};

我现在正在使用 SWIG 包装我的 C++ 代码,它会提示此类 typedef:

error: ‘typedef class MyClass MyClass::Self’ is private

导致此错误的包装器代码如下所示:

SWIGINTERN PyObject *_wrap_MyClass_DeepCopyFrom(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
MyClass *arg1 = (MyClass *) 0 ;
MyClass::Self *arg2 = 0 ;
(...)

编译器错误发生在省略号上方的最后一行。

有什么方法可以告诉 SWIG 不要使用私有(private) typedef,而是只使用完整的类型名称?

最佳答案

我建议保持简单(r):只需删除 typedef 并改写类名。

如果您真的讨厌这样,您可以告诉 SWIG %ignore“损坏的”方法,然后 %extend 使用包装方法调用真实方法的类。除非您绑定(bind)的类和方法的数量相对于您的总代码库而言很少,否则这种治疗可能比疾病更糟糕。

关于c++ - SWIG:公共(public)函数中使用的私有(private) typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4928417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com