나는 단지 호기심이 많다. 내가 서명const 및 매개 변수에서 & 매개 변수로의 변환이 잘못되었습니다.
CommandLogFilter::CommandLogFilter(QSharedPointer<LogServer> logServer, QObject *parent,
void (*preprocessValidCommand)(CommandDescriptor &descriptor))
와 g에서 오류가 발생하여 생성자에 세 번째 매개 변수로 서명
void printCommandReceived(const CommandDescriptor &descriptor)
과 기능 포인터를 전달하고 ++ 컴파일러 : 나의 이해에서
error: invalid conversion from ‘void (*)(const CommandDescriptor&)’ to ‘void (*)(CommandDescriptor&)’ [-fpermissive]
비에 대한 참조 -const 개체는 const 개체 매개 변수를 참조하는 인수로 사용할 수 있어야합니다. 따라서 비 const 객체 참조를 받아들이는 함수에 대한 타입 포인터를 가진 매개 변수는 심지어 const 객체 참조조차 받아들이는 함수에 대한 포인터 유형의 인수에 만족해야합니다 (그리고 암시 적 변환을 수행해야합니다).
어디서 잘못 되었나요?
"무언가에 대한 포인터"가 있으며 "다른 포인터"를 전달하려고합니다. pointed-to 유형이 유사한 경우에도 암시 적 변환은 없습니다. –