C++ 将 typedef 保护为 return 值

C++ protected typedef as return value

我不确定这是否可能,但基本上我有这个指针 typedef,它在我的线程之间共享的 class 中受到保护,我想创建一个函数 return是该类型定义的指针。

我可以毫无问题地在我的 .h 中声明该函数,但 .cpp 说它无法识别它。我还可以在函数中使用我的 typedef。正如我所说,我唯一不能做的就是将其作为 return 值。

我怀疑你们甚至都没有看到代码,但我发布它只是为了使其完整。

共享 header:

#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 函数声明 - 错误 "cit is undeclared identifier"

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

I can also use my typedef within a function.

这里的关键词是within.

Only thing as i said i can't do is have it as a return value.

您的 return 类型声明超出了函数的范围。在CR的范围之外,cit只能引用::cit。但是你没有定义类型 ::cit;你定义了 CR::cit。所以,当你在 CR 的范围之外时,比如当你声明一个成员函数时,你必须显式地解析范围:

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

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

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