gpt4 book ai didi

rasterbar libtorrent API 的 C++ 编译器问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:25:44 26 4
gpt4 key购买 nike

我试图编译无济于事。

这是导致问题的代码:

using namespace libtorrent;

const address addy;

new ip_filter();

ip_filter.add_rule(addy, addy, ip_filter::blocked);

s.set_ip_filter(&ip_filter);

我不断收到的错误是:

mytorrent.cpp:1338: error: expected unqualified-id before '.' token
mytorrent.cpp:1340: error: expected primary-expression before ')' token

这里是 void set_ip_filter():

void set_ip_filter(ip_filter const& f);
ip_filter const& get_ip_filter() const;

最后,这里是 ip_filter 类:

template <class Addr>
struct ip_range
{
Addr first;
Addr last;
int flags;
};

class ip_filter
{
public:
enum access_flags { blocked = 1 };

ip_filter();
void add_rule(address first, address last, int flags);
int access(address const& addr) const;

typedef boost::tuple<std::vector<ip_range<address_v4> >
, std::vector<ip_range<address_v6> > > filter_tuple_t;

filter_tuple_t export_filter() const;
};

如有任何提示,我们将不胜感激。

谢谢!

最佳答案

您正在使用 new ip_filter(),它将在堆上创建 ip_filter 类的新实例。但是您没有在任何地方分配 new 的结果。然后您尝试访问 ip_filter 的方法,就像它是一个对象一样,然后像它是一个对象一样传递它。 ip_filter 是一个类,不是一个对象,它只是告诉编译器如何生成一个ip_filter 类型的对象。要实际使用它,您需要首先创建 ip_filter 类的实例。然后您可以从该实例访问它的方法和成员。

ip_filter *my_filter = new ip_filter;

你不需要括号,因为你没有传递任何参数,它也容易混淆编译器,因为它看起来像你正在声明一个名为“ip_filter”的函数,返回类型“new”,不带参数。然后您可以通过 my_filter

指向的实例访问 ip_filter 方法
my_filter->add_rule(addy, addy, ip_filter::blocked);

然后像以前一样做,但没有 &,因为它已经是一个指针。

s.set_ip_filter(ip_filter);

关于rasterbar libtorrent API 的 C++ 编译器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4102124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com