4

最近、ns2シミュレータのソースコードを調べているときに、C++での静的クラスの定義に遭遇しました。

static class TCPHeaderClass : public PacketHeaderClass {
public:
        TCPHeaderClass() : PacketHeaderClass("PacketHeader/TCP",
                         sizeof(hdr_tcp)) {
        bind_offset(&hdr_tcp::offset_);
    }
} class_tcphdr;

私はこれまでC++で静的クラスに遭遇したことがありません。同じものの特性と用途は何ですか?

4

4 に答える 4

8

これは、 calledの静的インスタンスを宣言するための珍しい構文であり、次のようになります。TCPHeaderClassclass_tcphdr

class TCPHeaderClass : public PacketHeaderClass {
public:
        TCPHeaderClass() : PacketHeaderClass("PacketHeader/TCP",
                         sizeof(hdr_tcp)) {
        bind_offset(&hdr_tcp::offset_);
    }
};

static TCPHeaderClass class_tcphdr;
于 2012-08-11T23:09:09.107 に答える
5

静的なクラスではなく、変数ですclass_tcphdr

あなたのコードは以下と同等です:

class TCPHeaderClass : public PacketHeaderClass { /* etc. */ };

static TCPHeaderClass class_tcphdr;
于 2012-08-11T23:09:29.410 に答える
1

変数class tcphdrは静的であり、クラスではありません。C ++には静的クラスの概念はなく、名前空間のみがあります。静的クラスについては、C#などの言語を調べてください。

于 2012-08-11T23:10:35.033 に答える
1

クラスは静的ではなく、class_tcphdr静的です。

于 2012-08-11T23:11:02.337 に答える