2
어제 일부 테스트 기능을 구현했으며 모든 것이 컴파일되고 오류없이 정상적으로 작동했습니다. 오늘 나는 내 PC로 돌아 왔고 내 std::bind
의 밑줄이 빨간색이지만 오류없이 컴파일됩니다. Intellisense와 같은데 컴파일러는 std::bind
형식에 동의하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? 다음과 같이vs2015에서 std :: functional을 사용하여 위양성 오류가 발생했습니다.
#include <functional>
class MyClass {
public:
int doE() {
return 0;
}
int doF() {
return 1;
}
};
void main()
{
MyClass obj;
std::function<int()> f = std::bind(&MyClass::doE, obj); // underlined red
std::cout << f();
}
오류 메시지는 다음과 같습니다
Error (active) no suitable user-defined conversion from "std::_Binder<std::_Unforced, int (MyClass::*)(), MyClass &>" to "std::function<int()>" exists functionals c:\functionals\functionals\thirdFunctionOnObject.h
저도 같은 오류 유형을해야합니까 (인텔리 오류가 말을하지만 잘 컴파일) 더 정교한 코드 , 내가 사용하는 곳 std::mem_fn().
Intellisense는 대개 안전하게 무시할 수 있습니다. 거의 쓸모가 없습니다. –
Visual Studio IntelliSense 파서는 Visual C++ 컴파일러에서 사용하는 파서와 다릅니다. IntelliSense는 유효 코드가 유효하지 않다고 생각하여 오류로보고합니다. –
'std :: bind' 대신에 람다를 사용해보십시오. 왜냐하면'std :: bind' quirks로 인한 불분명 한 break 이외의 람다 대신에'std :: bind'를 사용할 이유가 거의 없기 때문입니다. 'std :: bind' 실수와 일반적인 매저키즘? – Yakk