2012-03-02 11 views
1

"name :: name"の構文と、C++プログラミングでの使用方法を教えてください。私は見てきましたが、私はまだそれを得ていません。手伝ってくれてありがとう。"name :: name"はC++で何を意味しますか?

void UsbProSender::SendMessageHeader(byte label, int size) const { 
    Serial.write(0x7E); 
    Serial.write(label); 
    Serial.write(size); 
    Serial.write(size >> 8); 
} 
+6

を考えることは、コンストラクタのように聞こえる...しかし、あなたが有用な答えをしたい場合、私はあなたがあなたの質問に多くのコンテキストを追加提案します。 – FatalError

+0

私はちょうど答えを編集し、コードを追加しました – unshakeable

+0

あなたの本を焼いたのは誰ですか? –

答えて

10

::は、スコープ解決演算子である:ここ

コンテキストコードです。

std::coutは、名前空間stdcoutという名前です。

は、std :: vectorのpush_backメソッドです。あなたのコード例で

void UsbProSender::SendMessageHeader(byte label, int size) const { 
    Serial.write(0x7E); 
    Serial.write(label); 
    Serial.write(size); 
    Serial.write(size >> 8); 
} 

UsbProSender::SendMessageHeaderUsbProSenderクラスのSendMessageHeaderメソッドの定義を提供しています。

別の(より完全な)例:

class Bar { 
    int foo(int i); // forward declaration 
}; 

// the definition 
int Bar::foo(int i) { 
    return i; 
} 
+0

構文例として多くの助けになる演算子の名前をつけてくれてありがとう – unshakeable

+0

良い答え。 UsbProSenderはクラスでも名前空間でもかまいません。彼が与えた事例からは分かりません。 –

+3

関数はconstなので、メンバーでなければなりません。 – SoapBox

2

それはスコープ解決するための演算子です。 任意のコンテキストがなければそのコード

class A { public: void f(){} }; 
class B { public: void f(){} }; 
class C : public A, public B {}; 

int main(int argc, char *argv[]) 
{ 
    C c; 
    // c.f(); // ambiguous: which one of two f() is called? 
    c.A::f(); // OK 
    c.B::f(); // OK 
    return 0; 
} 
関連する問題