我不确定这是否可行,但基本上我有这个指针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)
{
}
答案 0 :(得分:2)
我也可以在函数中使用我的typedef。
此处的关键词是 。
只有我说我不能做的事情就是将它作为回报值。
您的返回类型声明超出了函数的范围。在CR
范围之外,cit
只能引用::cit
。但是你没有定义类型::cit
;你定义了CR::cit
。因此,当您超出CR
的范围时,例如当您声明成员函数不在线时,您必须明确地解析范围:
CR::cit CC::_translateCommand(string &command)
尾随返回类型声明在函数范围内,因此如果您使用它,则不需要显式解析:
auto CC::_translateCommand(string &command) -> cit