如何解决CURL 作为 C++ 类的私有成员
我的目标是构建一个 C++ 类来抽象出几个 POST 方法。我想我想为整个类拥有一个 CURL 对象的实例,所有方法都共享该实例。
这是我的测试设置,运行良好
头文件
#pragma once
#include <curl/curl.h>
class RPC
{
public:
RPC();
};
cpp 文件
RPC::RPC()
{
CURL* m_curl;
m_curl = curl_easy_init();
// curl_easy_setopt() and curl_easy_perform()
curl_easy_cleanup(m_curl);
}
此代码构建并运行并产生预期的输出。问题是当我尝试使 m_curl
成为 RPC
类的私有成员时。 RPC
类将有多个方法调用 curl_easy_perform()
,我不想每次都调用 curl_easy_init()
和 curl_easy_cleanup
。我想分别在构造函数和析构函数中调用它们一次。
这就是我想要的
头文件
#pragma once
#include <curl/curl.h>
class RPC
{
public:
RPC();
~RPC();
void someMethod();
private:
CURL* m_curl;
};
cpp 文件
RPC::RPC()
{
m_curl = curl_easy_init();
}
RPC::~RPC()
{
curl_easy_cleanup(m_curl);
}
void RPC::someMethod()
{
// curl_easy_setopt() and curl_easy_perform()
}
问题在于头文件中的这一行:
CURL* m_curl;
我收到以下 3 个构建错误:
error C2143: Syntax error: missing ';' before '*'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2238: unexpected token(s) preceding ';'
我也试过在初始化列表中调用 curl_easy_init(),如下所示:
RPC::RPC() : m_curl(curl_easy_init())
但这会产生相同的构建错误。
感谢任何帮助! :)
编辑:我确实在标题中包含了 curl。
解决方法
在第一种情况下,您可以只在 cpp 文件中包含 CURL,但对于第二种情况,您必须在头文件中包含 CURL。
,您的标题需要如下所示:
#ifndef RPC_H
#define RPC_H
#include "curl/curl.h"
class RPC
{
public:
RPC();
~RPC();
void someMethod();
private:
CURL* m_curl;
};
#endif
换句话说:
- 您需要声明 CURL。
- 您可以通过在标题中 #include "curl/curl.h" 来完成此操作。
- 您的标头还需要一个 include guard(如果您还没有)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。