C ++保护typedef作为返回值

时间:2017-05-03 16:04:12

标签: c++ inheritance return-value typedef protected

我不确定这是否可行,但基本上我有这个指针typedef在我的线程中共享的类中受到保护,我想创建一个返回该typedef指针的函数。

我可以在我的.h中声明这个函数没有问题,但是.cpp说它没有识别它。我也可以在函数中使用我的typedef。只有我说我不能做的就是将它作为回报值。

我怀疑你们甚至不得不看到代码,但我发布它只是为了让它完整。

共享标题:

#pragma once


class CR
{


public:


private:

public:

    int c_outPut(std::string &output);

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

另一个.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函数声明 - 错误&#34; cit是未声明的标识符&#34;

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

1 个答案:

答案 0 :(得分:2)

  

我也可以在函数中使用我的typedef。

此处的关键词是

  

只有我说我不能做的事情就是将它作为回报值。

您的返回类型声明超出了函数的范围。在CR范围之外,cit只能引用::cit。但是你没有定义类型::cit;你定义了CR::cit。因此,当您超出CR的范围时,例如当您声明成员函数不在线时,您必须明确地解析范围:

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

尾随返回类型声明在函数范围内,因此如果您使用它,则不需要显式解析:

auto CC::_translateCommand(string &command) -> cit