0

c++/CLI アプリで文字列変数を宣言しようとしています。

私の宣言は次のようになります:

String^ strRptPath = "C:\Reports\NorthwindCustomers.rpt";

そして、私はこのエラーがあります:

error C2059: syntax error : '^'

error C2238: unexpected token(s) preceding ';'

私もこの方法を試しました:

String^ strRptPath =gcnew String("C:\Reports\NorthwindCustomers.rpt");

同じエラーが返されます。

コード全体は次のとおりです。

   #pragma once
namespace CRViewerXI
{
    using namespace System;
    using namespace System::Text;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace CrystalDecisions::Windows::Forms;

public __gc class Form1 : public System::Windows::Forms::Form
{   
public:
    Form1(void)
    {
        InitializeComponent();
    }


protected:
    void Dispose(Boolean disposing)
    {
        if (disposing && components)
        {
            components->Dispose();
        }
        __super::Dispose(disposing);
    }

private:
    CrystalDecisions::Windows::Forms::CrystalReportViewer *CRViewer;
    System::ComponentModel::Container * components;


private : String^ strRptPath =gcnew String("C:\\Reports\\NorthwindCustomers.rpt");
    void LoadReport()
    {

    }


    void InitializeComponent(void)
    {
        CRViewer = new CrystalDecisions::Windows::Forms::CrystalReportViewer();
        CRViewer->ActiveViewIndex = -1;
        CRViewer->ShowGroupTreeButton = true;
        CRViewer->ShowExportButton = true;
        CRViewer->EnableToolTips = true;
        CRViewer->DisplayToolbar = true;
        CRViewer->Dock = System::Windows::Forms::DockStyle::Fill;
        Controls->Add(CRViewer);

        this->AutoScaleBaseSize = System::Drawing::Size(5, 13);
        this->ClientSize = System::Drawing::Size(528, 394);
        this->Name = S"Form1";
        this->Text = S"Form1";
        this->Load += new System::EventHandler(this, Form1_Load);

    }   
private: System::Void Form1_Load(System::Object *  sender, System::EventArgs *  e)
        {   


        }

};

}

私は何か間違っていますか?マネージ C++ を使用するのは初めてです。

ありがとう。

4

2 に答える 2

0

using namespace System::Text;コードの先頭に追加するのを忘れた可能性があります。この名前空間は、使用時に必要ですString^

于 2013-03-04T08:06:00.263 に答える
0

Managed C++ と C++/CLI 構文が混在しているようです。
マネージド C++ (C++/CLI ではない) を使用している場合、マネージド オブジェクトの宣言は異なります。

マネージ C++ 構文:

   String __gc *RptPath = S"whatever";

C++/CLI 構文:

   String^ RptPath;

Managed C++ は現在非推奨になっていることに注意してください。可能であれば、代わりに C++/CLI を使用することをお勧めします (より明確な構文もあります)。

于 2013-03-04T08:45:14.863 に答える