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

dst_IP not が match 関数のスコープで宣言されているため、コンパイルしようとするとエラーが発生します。これを修正する方法を知っている人はいますか?おそらくポインタと関係があります。私はおそらく、私がC ++にまったく慣れていないことを言及する必要があります..

前もって感謝します!

4

1 に答える 1

0

private(グローバルの前にあるキーワードは、コンパイラが提供する非標準の拡張機能であると想定しています。標準の C++ では、そのキーワードは許可されていません。)

C++ では大文字と小文字が区別されます。グローバル変数には名前Dst_IPが付けられていますが、match()あなたが書いdst_IPた.

無関係:

C 文字列を比較するには、ヘッダーからstd::strcmp()orをstd::strncmp()使用します (NULL で終了しない可能性のある文字列でより安全が必要な場合は、後者を使用します) 。<cstring>ポインターで演算子を使用する==と、ポインターが指すコンテンツではなく、ポインターのみが比較されます。またはstd::string、生の C 文字列の代わりに使用してください。

于 2013-10-30T16:57:26.503 に答える