안녕하세요 저는 버튼을 누를 때 (마우스 위치와 같이) 수신 대기열에 대한 포인터를 생성하는 Button 템플릿 클래스를 만들려고합니다. 호출되어야하는 함수.클래스/함수 템플릿에서 무효 인수를 전달하는 방법
그러나 단추는 종종 void를 반환하고 아무런 인자도 가지지 않습니다 (누르는 버튼이 발생합니다. 아무런 인자도 가지지 않고 눌렀다가 무언가를합니다.) 어떻게 클래스 멤버를 생성합니까? 함수는 분명히 이후 void을 인수 유형으로 가질 수 없습니까?
는 여기가 도움이 경우 소스입니다 :
template<typename Return = void, typename Arg1 = void, typename Arg2 = void>
class Button
{
private:
boost::function<Return (Arg1, Arg2)> Function;
//Return (*Function)(Arg1, Arg2); // this didn't work so i tried boost::function
public:
void Activate(Arg1, Arg2){ Function(Arg1, Arg2) ;};
void SetFunction(Return (*Function)(Arg1, Arg2)){
this->Function= Function;};
//constructors
Button(){ Function= 0;};
Button(Return (*Function)(Arg1, Arg2)){
this->Function = &Function; };
};
를 사용하는 C++ 0X 키워드인가? 버튼이 의미하는 바는 종종 무효로 돌아가고 args를받지 않는다는 것입니다. 어떤 버튼을 언급하고 있습니까? – Jaime
@Jaime : 당신이 누르는 것과 어떤 일이 일어나는 버튼 : 그들은 아무런 논쟁도하지 않고, 눌렀다가 무언가를합니다. – Griffin
버튼은 이벤트를 생성하는 그래픽 요소입니다 (예 : 클릭). 해당 이벤트에 응답하는 함수를 '훅 (hook)'하고 단추가 '하는 일'을 나타내는 함수입니다. UI 프레임 워크는 해당 이벤트에 응답하도록 구현해야하는 서명을 정의합니다 (args와 return 타입의 타입) 어떻게 당신은 당신의 템플릿을 사용하고 싶습니까? 그것의 목적은 무엇이며 어쩌면 우리는 그것에 대해 갈 방법에 대한 제안을 내놓을 수 있습니다. – Jaime