2017-05-03 2 views
-1

이 경우에도 가능할지 모르겠지만 기본적으로이 스레드는 내 스레드간에 공유하는 클래스에서 보호되며이 포인터를 반환하는 함수를 만들고 싶습니다. 그 typedef의.반환 값으로 C++로 보호되는 typedef

내 .h에서 아무런 문제없이 함수를 선언 할 수는 있지만 .cpp는이를 인식하지 못한다고 말합니다. 함수 내에서 typedef를 사용할 수도 있습니다. 내가 할 수없는 말은 반환 가치로 생각하는 것뿐입니다.

여러분도 코드를보아야 할 지 모르겠지만 코드를 완성하기 위해 게시하고 있습니다.

공유 헤더 : 다른 .H

#pragma once 
#include "commonRec.h" 

#include <unordered_map> 
#include <WinSock2.h> 
#include <iterator> 

class CH : CR 
{ 

    std::string sendToCon(cit &const_it, const std::string &command); 
    cit findHost(std::string &searchHost); 
}; 

의 .cpp 함수 선언의

#pragma once 


class CR 
{ 


public: 


private: 

public: 

    int c_outPut(std::string &output); 

protected: 
    typedef std::unordered_map<in_addr, SOCKET>::const_iterator cit; 
}; 

짧은 버전 - 오류 "CIT가 선언되지 않은 식별자"

cit CC::_translateCommand(string &command) 
{ 
} 
+1

[mcve]를 만듭니다. – user2079303

답변

2

I 함수 내에서 typedef를 사용할 수도 있습니다.

여기서 핵심 단어는 내에서입니다.

내가 할 수없는 말은 반환 값으로 사용하는 것뿐입니다.

반환 유형 선언은 함수의 범위를 벗어납니다. CR의 범위를 벗어난 경우 cit::cit만을 참조 할 수 있습니다. 그러나 당신은 타입을 정의하지 않았다 ::cit; CR::cit을 정의했습니다. 당신은 당신이 밖으로의 라인 멤버 함수를 선언 할 때와 같이 CR의 범위 밖에있을 때 그래서, 당신은 명시 적으로 범위를 해결해야합니다

CR::cit CC::_translateCommand(string &command) 

후행 반환 형식 선언의 범위 내에 함수를 사용한다면 명시 적 해상도가 필요하지 않습니다.

auto CC::_translateCommand(string &command) -> cit 
관련 문제