2014-01-15 1 views
0

사용자 정의 컨트롤을 만들려고 노력하고 있지만 제한된 C++ 지식으로 약간 어려움을 겪고 있습니다.C++에서 사용자 정의 컨트롤을 만들 때 컨트롤 확장

비슷한 기능을 가진 무언가를 만들려고하기 때문에 RadioGroup.h 헤더 파일을 살펴 보았습니다. 내가

CompanyRadioGroup.cpp:12:72: error: no matching function for call to 'bb::cascades::Control::Control(bb::cascades::Container*&)' 

그것은 표시되는 오류가 발생하고 컴파일에

#ifndef COMPANYRADIOGROUP_H_ 
#define COMPANYRADIOGROUP_H_ 

#include <bb/cascades/Control> 
#include <bb/cascades/Container> 
#include <bb/cascades/Option> 

using namespace bb::cascades; 

class CompanyRadioGroup : public Control { 
private: 
Q_OBJECT 
QDeclarativeListProperty<Option> options(); 

public: 
CompanyRadioGroup(Container * parent = 0); 
virtual ~CompanyRadioGroup(); 

template <typename BuilderType, typename BuiltType> 
class TBuilder : public BaseClass::TBuilder<BuilderType, BuiltType> 
     { 
     protected: 
      TBuilder(BuiltType* node) : BaseClass::TBuilder<BuilderType, BuiltType>(node) 
      { 
      } 
     public: 

      /*! 
      * @copydoc bb::cascades::RadioGroup::setDividersVisible(bool) 
      * 
      * @since BlackBerry 10.0.0 
      */ 
      BuilderType& dividers(bool dividersVisible) 
      { 
       this->instance().setDividersVisible(dividersVisible); 
       return this->builder(); 
      } 

      BuilderType& add(Option* option) 
      { 
       this->instance().add(option); 
       return this->builder(); 
      } 

      BuilderType& add(const QString &optionText, const QVariant &value = QVariant(), bool selected = false) 
      { 
       this->instance().add(Option::create().text(optionText).value(value).selected(selected)); 
       return this->builder(); 
      } 
     }; 

     class Builder : public TBuilder<Builder, CompanyRadioGroup> 
     { 
     public: 
      explicit Builder() : TBuilder<Builder, CompanyRadioGroup>(new CompanyRadioGroup()) 
      { 
      } 
     }; 

     static Builder create() 
     { 
      return Builder(); 
     } 
}; 

#endif 

CompanyRadioGroup.cpp

#include "CompanyRadioGroup.h" 

#include <bb/cascades/Control> 

CompanyRadioGroup::CompanyRadioGroup(Container * parent) : Control(parent){ 


} 

CompanyRadioGroup::~CompanyRadioGroup() { 
// TODO Auto-generated destructor stub 
} 

CompanyRadioGroup.h : 여기

제 2 개 파일입니다 티 모자에 컨트롤에 대한 생성자가 필요하지만, 첫 번째 매개 변수 또는 예제에 대한 설명서를 찾을 수 없습니다.

Control(ControlPrivate &_d_ptr, Control* parent = 0); 

내가 _d_ptr를 전달하는 방법을 누군가가 조언을하거나 내가이 문제를 극복 할 수있는 방법 :

는 Control.h에 따라 다음이 파일을?

답변

0

코드에서 아무 곳이나 첫 번째 매개 변수 _d_ptr이 필요하지 않으면 "no-object"를 나타내는 더미 abject 인스턴스를 만들고이를 첫 번째 매개 변수로 전달하십시오. C++에서는 참조가 널 일 수 없으므로 널 인수를 전달할 수 없습니다. 그냥 더미 contrilPrivate 객체를 만들고 그것에 대한 참조를 생성자에 전달하십시오.

+0

ControlPrivate는 나를 위해 액세스 할 수없는 클래스이고, 하나는 "Control"대신 "CustomControl"을 확장한다고 가정되어 왔지만, 당신의 대답이 저를 해결책으로 인도하는 데 도움이되었습니다, 감사합니다 :) 이제 qml 자식을 수락하는 방법을 알아야하지만 다른 문제입니다. P – hyarion