2017-05-03 9 views
-1

これは可能かどうかわかりませんが、基本的には私のスレッド間で共有するクラスで保護されたこのポインタtypedefを持っています。ポインタを返す関数を作成したいその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 
関連する問題