1

現在、簡単なチュートリアルに従っています。そして、XOR "^" 記号が見たことのない場所に現れました。オブジェクトへのポインターを宣言している場合、アスタリスクが正確にどこにあるでしょう。以下のコード スニペットで確認してください。

COpenGL(System::Windows::Forms::Form ^ parentForm, 
            GLsizei iWidth, GLsizei iHeight)
    {
        CreateParams^ cp = gcnew CreateParams;

        // Set the position on the form
        cp->X = 100;
        cp->Y = 100;
        cp->Height = iWidth;
        cp->Width = iHeight;

その後、オブジェクト cp は、CreateParams 型のオブジェクトへのポインターであるかのように逆参照されます。

それで....^はどういう意味ですか?Google はあまり友好的ではありませんでした。

4

2 に答える 2

3

C++/CLI は C++ とは異なる言語です。これは、C++ の一種の拡張です。重要な新機能は、ガベージ コレクションされた CLI オブジェクトです。この型T ^は、 new キーワードで作成される、そのようなオブジェクトへの追跡されたポインターgcnewを示します。同様に、T %追跡参照を示します。

実際、型システムには、デストラクタファイナライザの両方を持つ「マネージド クラス」 ( ref class/で指定) の概念を備えた、まったく新しい部分があります。実際、私はかつてこれについて非常に混乱していたので、それについて質問しました.ref struct

Herb Sutter のC++/CLI の設計理論的根拠は優れた読み物です。

于 2013-04-30T10:22:30.253 に答える
2

これ^は、C++ に対する Microsoft の拡張機能、つまり C++/CLI または C++/CX の一部です。Microsoft は、.NET または WinRT で使用されるガベージ コレクション ポインターを示すためにそれを導入しました。呼び出しが表示されgcnewます-これは、「通常の」メモリ割り当てではなく、ランタイムからガベージコレクションされたメモリであることを意味します。

于 2013-04-30T10:23:06.390 に答える