C++ C++;rasterbar libtorrent API的编译器问题
我试图编译,但没有用 以下是导致问题的代码:C++ C++;rasterbar libtorrent API的编译器问题,c++,C++,我试图编译,但没有用 以下是导致问题的代码: 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 '.'
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
以下是无效集\u ip\u过滤器()
最后,这里是ip_过滤器类:
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;
};
模板
结构ip_范围
{
地址优先;
地址最后;
国际旗帜;
};
类ip_过滤器
{
公众:
枚举访问标志{blocked=1};
ip_过滤器();
void add_规则(地址优先、地址最后、int标志);
int访问(地址常量和地址)常量;
typedef boost::元组过滤器;
filter\u tuple\u t export\u filter()常量;
};
任何提示都将不胜感激
谢谢大家! 您正在使用
new ip\u filter()
,这将在堆上创建ip\u filter
类的新实例。但是您没有在任何地方分配new
的结果。然后,您试图访问ip_filter
的方法,就像它是一个对象一样,然后将其传递给其他人,就像它是一个对象一样ip\u filter
是一个类,而不是一个对象,它只是告诉编译器如何创建ip\u filter
类型的对象。要实际使用它,您需要首先创建ip\u过滤器
类的实例。然后您可以从该实例访问它的方法和成员
ip_filter *my_filter = new ip_filter;
您不需要括号,因为您没有传递任何参数,这也会使编译器感到困惑,因为您似乎正在声明一个名为“ip_filter”的函数,返回类型“new”,不带任何参数。然后,您可以通过my\u filter
指向的实例访问ip\u filter
方法
my_filter->add_rule(addy, addy, ip_filter::blocked);
然后像前面一样操作,但不要使用&
,因为它已经是一个指针了
s.set_ip_filter(ip_filter);
c
标记已删除:使用
,命名空间
,新建
,:
,和
(参考??,公共:
以及其他可能的构造在c中无效
s.set_ip_filter(ip_filter);