VC.NET 初心者です。
VC.NETでStringクラスを定義して、ビルドを行ったところ、コンパイルエラーとなります。
VB.NETでは定義するだけで使用できますが、VC.NETではなにか必要なのでしょうか。
エラーの意味がわからないため、どうしたらよいかわかりません。
助けてください。
VC.NET2005でWindowsフォームアプリケーションをテンプレートにプロジェクトを作成しました。
名前空間の追加はしておりません。
以下、実際のコードです。
### ここから ###
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e)
{
DateTime dt;
dt = DateTime::Now;
System::String strValue;
strValue = dt.Year.ToString();
}
### ここまで ###
ビルドしたところ、以下のエラーがでます。
### ここから ###
error C3149: 'System::String' : トップレベルの '^' なしに、この型をここに使用することはできません
### ここまで ###
以上です。よろしくお願いいたします。
VB.NETとは言語仕様が違います。
System::Stringクラスは参照型のクラス(refクラス)ですので、
型の後に ^ が必要です。
System::String^ strValue;
一方DateTimeは値型クラス(valueクラス)なので^は必要ないです。
ここら辺は基本的なことなので、C++/CLIの入門書を読まれたほうが理解が進むと思います。
一応MSDN
CLR 参照クラスのオブジェクトの宣言
http://msdn2.microsoft.com/ja-jp/library/ms235261(VS.80).aspx
ありがとうございました。
VB.NETは言語仕様が違うのですね。
勉強します。
訂正です。
>System::Stringクラスは参照型のクラス(refクラス)ですので、
>型の後に ^ が必要です。
は間違っていました。
参照型だから^を付けないといけないということはなくて、
用途によって、参照型でも^を付けないで宣言することもあります。
(Formとか)
ただ、System::Stringの場合は^を付けた宣言しか出来ないようです。
(理由はよくわかりません。というか結構話題になっているようだけど
まともに読んでいないだけなんですけどね。)
ツイート | ![]() |