好吧,所以这让我感到烦恼,我确信这是一件很简单的事情。基本上,我正在使用一个名为POCO的开源C ++客户端来为一个类创建一个电子邮件客户端......
基本上,我有一个pop3客户端对象,它从我的电子邮件服务器检索电子邮件,然后将电子邮件放在一个名为MailMessage的对象中。现在,我希望能够获得我的附件,而且我必须执行的唯一功能是以下功能:
static const std::string & contentTransferEncodingToString(
ContentTransferEncoding encoding
);
问题是,我不知道以下是什么:
ContentTransferEncoding encoding
在深入研究源代码后,我发现它与“枚举”有关(顺便提一下这是公开的):
enum ContentTransferEncoding
{
ENCODING_7BIT,
ENCODING_8BIT,
ENCODING_QUOTED_PRINTABLE,
ENCODING_BASE64
};
基本上,我试图打开的附件使用7位编码。是否有人知道如何处理这些枚举,以及如何将它们传递到contentTransferEncodingToString函数?
非常感谢您的努力:)
编辑:
所以,不真实,但我没有意识到这一点 我试图访问的功能 受到保护,它不是枚举,所以 你们都建议访问的方式 枚举是正确的!我想是的 我试图访问它们的方式是 也正确= P.只是一个大傻瓜 错误。
但感谢您的所有努力! 伟大的社区:)
答案 0 :(得分:3)
你可以说
const std::string& s = contentTransferEncodingToString(ENCODING_7BIT)
或
const std::string& s = contentTransferEncodingToString(ContentTransferEncoding::ENCODING_7BIT)
答案 1 :(得分:3)
我用Google搜索了你的问题,我发现了这个:
http://www.appinf.com/docs/poco/Poco.Net.MailMessage.html#16563
完整的命名空间是Poco :: Net :: Message :: ContentTransferEncoding所以我假设你必须使用:
using namespace Poco::Net::Message;
或
string &s = contentTransferEncodingToString(Poco::Net::Message::ContentTransferEncoding::ENCODING_7BIT);
答案 2 :(得分:3)
你正在调用的函数是保护的和静态的,这意味着你必须有这样的东西:
class test : public Poco::Net::MailMessage{
pubic:
std::string myFunc(){
// you can you the protected function here
return ContentTransferEncoding(ENCODING_7BIT);
// or
// because you have inherited all the class
// return CTE_7BIT;
}
答案 3 :(得分:2)
非常简单,只需使用枚举元素调用函数:
std::string str = contentTransferEncodingToString(ENCODING_8BIT);
枚举是一个枚举。您可以通过定义一堆
来获得相同的结果const int ENCODING_7BIT = 0;
const int ENCODING_8BIT = 1;
但是,如果将8传递给函数会发生什么?定义枚举允许
答案 4 :(得分:2)
是否尝试调用继承自Poco :: NET :: MailMessage的contentTransferEncodingToString的类?
方法contentTransferEncodingToString不受公开保护,因此只能从继承MailMessage的类中调用。
如果这不是问题,请您完全按照编译器打印的错误信息发布。
答案 5 :(得分:2)
是否有人知道如何处理这些枚举,以及如何将它们传递到contentTransferEncodingToString函数?
有几个答案显示了使用enum
的基本方法。在尝试它们时,您会收到语法正确的错误消息,但无法从您所在的范围访问使用这些enums
的方法。
然后,答案是进入可以访问所需内容的范围。
有问题的方法显然是protected
,这意味着访问它们的方法是通过派生类。我不是说这是好的设计,但显然POCO的设计师希望你使用它。
答案 6 :(得分:0)
所以,不真实,但我没有意识到我试图访问的功能受到保护,它不是枚举,所以你们所有建议访问枚举的方式都是正确的!我想我试图访问它们的方式也是正确的= P.只是一个很大的愚蠢错误。
但感谢您的所有努力!伟大的社区:)