ページ 1 / 1
.netでの文字列の配列
Posted: 2010年4月08日(木) 13:33
by セレン
private: array<String^>^ Path;
のようにいつ確保しているのですが配列の個数を指定したいです。
char型とかでしたら[10]とかでかけたのですがこの様には書けないのでしょうか?
Re:.netでの文字列の配列
Posted: 2010年4月08日(木) 17:06
by YuO
.NET Frameworkにおいて,配列型はあくまで参照型です。
# System::Arrayを継承している形になる。
なので,gcnewを使って構築しないといけません。
Path = gcnew array<String^>(10);
unmanagedのイメージで書くならば,
std::vector<std::String *> * Path;
に対して,
Path = new std::vector<std::String *>(10);
としないといけないのと同じことです。
Re:.netでの文字列の配列
Posted: 2010年4月09日(金) 00:33
by セレン
回答ありがとうございます。
クラスで使う為に
private: String^ Path = gcnew array<String^>(10);
と書いたのですが
error C3845: 'KanadeMemo::Form1::Path': ref クラス または値型の内部で、スタティック データ メンバのみ初期化することができます
というエラーが出てしまうのでてしまいます。
Path = gcnew array<String^>(10); でもエラーが出てしまうのですがクラスには書けないのでしょうか?
Re:.netでの文字列の配列
Posted: 2010年4月09日(金) 12:44
by YuO
メンバ変数の初期化の問題ですか。
であれば,C++ですから,直接的にデータメンバを初期化することはできません。
コンストラクタの初期化子を使います。
e.g.)
ref class Test
{
public:
Test () : dataMember_(gcnew array<String^>(10))
{
}
private:
array<String^>^ dataMember_ ;
};