Windows에서 Visual C++로 개발 한 다음 g ++을 사용하여 Linux에서 컴파일하기 때문에 몇 가지 문제가 발생합니다. 내가 이해 못하는 한가지는 g ++이 함수에 생성자에 대한 참조를 전달하면 일치하는 데이터 유형이 함수에 전달되지 않는 것입니다. 그것은 다음과 같이 호출되면g ++는 Visual C++과 달리 별도의 줄에 선언하지 않으면 데이터 형식을 유추 할 수 없습니다.
static int to_int(string& value);
:
: 는int id_number = EZXMsg::to_int(string(tokens[index]));
g ++ (여기서 유형은 vector<char*>& tokens
인 토큰) 오류를 범 특히, 이런 방법은 서명을 주어진
main.cpp:130: error: no matching function for call to 'ezx::iserver::EZXMsg::to_int(std::string)' ../iserver-api/ezxmsg.h:50: note: candidates are: static int ezx::iserver::EZXMsg::to_int(std::string&)
Visual C++에는 컴파일하는 데 문제가 없습니다. g의 ++을 위해 문제를 해결하려면 코드는 다음과 같이 할 필요가 :
string value(tokens[index]);
int roid = EZXMsg::to_int(value);
추가적인 라인을 필요로 g 이유는 ++ 무엇입니까?
당신은 마이크로 소프트가 표준 아니라고하려는 : 비 const를 참조를 복용 함수에 비 임시 문자열을 전달해야? :) –
@SamGoldberg, 예. 확장 기능은 컴파일러 스위치를 통해 비활성화 할 수 있습니다 ([언어 확장 비활성화] (http://msdn.microsoft.com/en-us/library/0k0w269d%28v=vs.110%29.aspx) 참조). – hmjd
변경 사항을 알려 드리겠습니다. 이제는 설명해 봤으면 좋겠다. 좋은 명확한 설명 (특히 나와 같은 초보자를위한)! –