와 함께 캐스팅 Node
Qt는 I 클래스를 상속
class Node : public QObject { Q_OBJECT public: Node(QObject* p) : QObject(p){} void run() { //access to property runImplementtation(); } virtual void runImplementation() = 0; };
내가 가진 내가의 속성을 조작 할 수 있습니다하고자하는 기능의 실행에서 클래스 NodeA
class NodeA : public Node { Q_OBJECT Q_PROPERTY(double _a READ a WRITE setA) public: NodeA(QObject* p=NULL) : Node(p){} void runImplementation() {} double a() const { return _a; } void setA(double a) { _a = a;} private: double _a; };
자식 개체. NodeA 개체에서 실행을 호출하면 run 메서드에서 this-> 속성 ("_ a")으로 _a 속성에 액세스 할 수 없습니다.
그래서 내가 찾은 해결책은 다음과 같습니다 는Node
const QMetaObject * _metaObject;
에서 각 자식 클래스이와
_metaObject = metaObject();
의 생성자에서 선언 실행 방법, 나는 _metaObject->cast(this)->property("_a");
와 _A 속성에 액세스 할 수 있습니다.
그러나 각 자식 클래스의 생성자에서 _metaObject = metaObject();
을 수행해야한다고해서 만족스럽지 않습니다.
nitpick : QObject를 수락해야'* QObject를 P =에 전달되는 생성자 0'in 슈퍼 생성자 –
'run()'또는'runImplementation()'에 액세스하려고합니까? – lazycoder
나는 runImplementation을 호출하는 run 메소드를 호출한다. – artoon