-2

我正在为路由器编写代码,并且已经完成了应该为路由表编写代码的部分。我做了一个看起来像这样的类:

//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;
}

由于在 match 函数的范围内未声明 dst_IP ,因此在尝试编译时出现错误。有谁知道如何解决这个问题?这可能与指针有关。我可能应该提到我对 C++ 很陌生。

提前致谢!

4

1 回答 1

0

(我假设private你在 globals 前面的关键字是你的编译器提供的一些非标准扩展。对于标准 C++,那个关键字是不允许的。)

C++ 区分大小写。全局变量被命名Dst_IP但在match()你写的dst_IP.

无关:

要比较 C 字符串,请使用标头中的std::strcmp()or std::strncmp()(如果您希望对可能不是 NULL 终止的字符串更安全,请使用后者)<cstring>。在指针上使用==运算符时,它只是比较指针,而不是它们指向的内容。或者更好的是,使用std::string而不是原始 C 字符串。

于 2013-10-30T16:57:26.503 回答