【问题标题】:Squish: Enum as function parameterSquish:枚举作为函数参数
【发布时间】:2015-09-03 13:15:40
【问题描述】:

有人知道在 c++ 函数中使用枚举作为函数参数并用 squish 调用它们的解决方法吗? Enum 在另一个类和命名空间中被声明为函数本身。 以下代码正在使用并在 qt 中工作:

枚举类:

namespace prem {
     namespace space {

         class Controller : public QObject {
             Q_OBJECT
             Q_ENUMS(ID)

         public:

            enum ID { ONE, TWO, THREE };
          //.... other Stuff

         };
     } 
}

使用类:

namespace prem {
    namespace area {

        class Handler: public QObject {

        //...... some stuff

        public slot:

             void slotHandelID(prem::space::Controller::ID id) {
             // do some stuff 
             } 

        };
    }
}

现在我想在 python 测试脚本中调用 slotHandelID 函数。

controller = findObject("m_controller")
handler = findObject("m_handler")
handler.slotHandelID(controller.ONE)

但我明白了

SyntaxError: No matching 'slotHandelID(int)' overload found: Following overloads are available:
    prem::area::Handler::slotHandelID(undefined)

当我在 Controller 类中定义 slotHandelID(prem::space::Controller::ID id) 时,代码可以正常工作。

【问题讨论】:

  • 你怎么称呼slotHandelID?
  • 我认为你缺少一个 ;遵循枚举定义。
  • 我也不确定public slot: 的含义,而不是public:。好的,这是一个特定于 QT 的扩展。
  • 失踪的;是一个错字,代码工作正常。这只是一个压扁的“问题”。是的 'public slot:' 是一个 qt 扩展。

标签: python c++ qt enums squish


【解决方案1】:

在新的 squish 版本 6.0 中修复了该错误。

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多