답변
: 내 예에서 볼 수 있듯이
struct Foo{
typedef bool (*FooPtr)(Foo a, Foo b);
Foo(FooPtr p)
: p(p)
{}
bool operator()(Foo a, Foo b) const{
return p(a,b);
}
FooPtr p;
};
struct Bar{
Bar(Foo f)
: some_callback(f)
{}
Foo some_callback;
};
bool a_callback(Foo a, Foo b){
return false;
}
int main() {
Bar b(a_callback);
b.some_callback(Foo(a_callback), Foo(a_callback));
}
나는 지금까지 그 어떤 사용을 볼 수 있었다하지 않는 것이.
정확히 무엇이 요구되었는지는 모르겠지만 가능한 한 멀리 갈 수 있습니다. –
나는 이것을 사용할 수있다, 고맙습니다. 제오. – Tergiver
유형 시스템에서는이를 표현할 수 없습니다. 근본적으로 잘못된 것은 없지만 형식 시스템 내에서 사이클을 제거하여 단순화합니다. 나는 강력하게 Axiom of Foundation을 생각 나게합니다. 당신은 할 수 없습니다
typedef bool (*Foo)(void* a, void* b);
bool f(void* a, void* b)
{
return ((Foo)a)(a,b);
}
'void *'포인터를 그처럼 함수 포인터에 캐스트 할 수 없습니다. POSIX는'void * ptr; FunctionPtrType fptr; * (void **) (& fptr) = ptr;', 정의되지 않은 동작을 방지합니다. –
@ R.MartinhoFernandes : 당신은 그것이 구현 정의 된 것입니다. 그러나'void *'와 같은 크기의 함수 포인터가있는 정교한 폰 노이만 아키텍처에서이 작업을 수행 할 수 있습니다. – ybungalobill
얼마나 많은 여분의 간접 참조를 추가하든 관계없이,'void *'와 함수 포인터 사이에 이식 가능하게 캐스트 할 수 없습니다. 대신 다른 함수 포인터 유형을 사용하십시오. –
- 1. 플렉스 : 개체 자체를 참조하는 방법?
- 2. 구글 앱 엔진 자체를 참조하는 모델을 만들기
- 3. Doctrine 2 - 테이블 자체를 참조하는 관계
- 4. typedef 내의 typedef
- 5. 개체를 참조하는 클래스 변수의 장점은 무엇입니까? 객체 자체를 저장하는 대신
- 6. Typedef 일반화
- 7. typedef struct
- 8. 재귀 typedef
- 9. 루핑 typedef
- 10. 많은 DLL을 참조하는 DLL을 참조하는 fsx 스크립트
- 11. typedef const struct * CGPath와 typedef struct * CGPath의 차이점은 무엇입니까?
- 12. 으로 typedef 열거 같은 변수 만
- 13. typedef struct in use
- 14. unnamed enum & typedef?
- 15. .NET DLL에서 typedef 내보내기
- 16. Dart의 typedef 란 무엇입니까?
- 17. 전달 선언 부작용이있는 typedef?
- 18. C의 typedef 동작
- 19. typedef enum, 값을
- 20. C++ typedef 의미
- 21. 모호한 포인터 typedef 파악하기
- 22. 프로그램에서 typedef 사용하기
- 23. 함수에 typedef 사용
- 24. 클래스 내의 typedef
- 25. typedef struct C2275 오류
- 26. 왜 typedef char CHAR
- 27. C++ typedef 구문 규칙
- 28. 일부 gtk typedef 사용
- 29. 템플릿 기반 클래스의 typedef?
- 30. 으로 typedef C++,
을가 끝없는 재귀 정의이기 때문에 :
은 무엇 당신이 할 수있는 것은 무효 포인터를 전달하고 유형으로 캐스팅이다. –
@SethCarnegie : 귀하의 주장은 유효하지 않습니다. 'struct X {X * a; }; 개념적으로 동일하지만 * 허용됩니다. – ybungalobill
@ybungalobill : 아니요, 함수 유형에 매개 변수가 들어 있습니다. 클래스 유형에는 구성원이 들어 있지 않습니다. – Xeo