삼항 연산자를 사용하여 C++에서 함수 포인터를 정의하면 컴파일러 오류 overloaded function with no contextual type information
이 발생합니다. 혼란 스럽습니다. 누군가가 나에게이 행동의 이유를 설명 할 수 있을까요?삼항 연산자에서 함수 포인터 정의
#include <string>
#include <string.h>
#include <iostream>
const char *my_strstr1 (const char *__haystack, const char *__needle) {
std::cout << "my_strstr" << std::endl;
return strstr(__haystack, __needle);
}
const char *my_strstr2 (const char *__haystack, const char *__needle) {
std::cout << "my_strstr2" << std::endl;
return strstr(__haystack, __needle);
}
int main(int argc, char** argv) {
std::cout << "argc:" << argc << std::endl;
//ok
// const char* (*StrStr)(const char*, const char*) = strstr;
// const char* (*StrStr)(const char*, const char*) = (argc > 1) ? my_strstr2 : my_strstr1;
// error: overloaded function with no contextual type information
const char* (*StrStr)(const char*, const char*) = (argc > 1) ? my_strstr1 : strstr;
StrStr("helloworld", "h");
return 0;
}
작성 하시겠습니까? (argc> 1)? my_strstr1 : my_strstr2; – user3286661
@ user3286661 아니요, OP는 표준 라이브러리'strstr'을 사용하려고합니다. –
그런 다음 std :: – user3286661