我正在为路由器编写代码,并且我已经将它编写到我应该为路由表编写代码的部分。我做了一个看起来像这样的课:
//Global variables
unsigned char Dst_IP[4];
unsigned char Nxt_Hop[4];
int Mask;
int OutIF;
RTEntry::RTEntry(unsigned char *dst_IP, int mask, int outIF, unsigned char *nxt_Hop)
{
Dst_IP = dst_IP;
Mask = mask;
OutIF = outIF;
Nxt_Hop = nxt_Hop;
}
bool match(unsigned char *IPaddress)
{
bool isMatch = false;
if(IPaddress == dst_IP)
{
isMatch = true;
}
return isMatch;
}
我尝试编译时遇到错误,因为dst_IP没有在match函数的范围内声明。有没有人知道如何解决这个问题?它可能与指针有关。我应该提一下,我对C ++很陌生。
提前致谢!
答案 0 :(得分:0)
(我假设你在globals前面的private
关键字是编译器提供的一些非标准扩展。使用标准C ++,那里不允许使用该关键字。)
C ++区分大小写。全局变量名为Dst_IP
,但在match()
中您编写了dst_IP
。
相依:
要比较C字符串,请使用std::strcmp()
或std::strncmp()
(如果您希望从<cstring>
标题中获得更多安全性以及可能不是NULL终止的字符串,请使用后者。在指针上使用==
运算符时,它只是比较指针,而不是它们指向的内容。或者更好的是,使用std::string
而不是原始C字符串。