【发布时间】:2021-08-29 11:59:36
【问题描述】:
我的目标是构建一个 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。
【问题讨论】:
-
你试过在头文件中#include
吗? -
糟糕,应该将其包含在示例代码中。我确实在头文件中包含 curl:
#pragma once#include <curl/curl.h> -
你确定你正在编译你发布的同一个文件吗?确保文件没有在编辑器中修改并写入磁盘。
-
是的,我确定我正在编译该代码。