MC++の変な問題

解決


清原  2006-08-11 03:32:35  No: 62707

Windows XP  Visual C++.Net 2003  MC++

こんにちは、今日も変なことを発見しました、質問を提出させていただきます。
以下の部分はコードです、問題点は  なぜ  エラー出ないのですか?
引数なしのコンストラクターは定義していないのに…

#using <mscorlib.dll>
using namespace System;

__value class ValueClass
{
public:
  __wchar_t  m_Name __gc[];
  Byte    m_Chinese;
  Byte    m_English;
  Byte    m_Math;

public:
  //ValueClass()
  //{
  //  ....
  //}
  ValueClass( String* name ) : m_Chinese(0),m_English(0),m_Math(0)
  {
    m_Name = name->ToCharArray();
  }
  ValueClass( String* name , Byte chinese , Byte english , Byte math ):
    m_Chinese(chinese),m_English(english),m_Math(math)
  {
    m_Name = name->ToCharArray();
  }
};

int _tmain()
{
         ////デフォルトのコンストラクターが呼び出されるはずだが…
  ValueClass obj;
  obj.m_Name = (S"Justin")->ToCharArray();
  obj.m_English = 90;
  obj.m_Math = 73;
  obj.m_Chinese = 67;
  return 0;
}

コンパイルエラーが出ると思ってるけど、意外とひとつも出てきません。
このクラスを  __gc class  にして  もう一度コンパイルしてみたら、エラーが出ます。
どうして  __value class  で  そういうエラーが出ないのですか?
よろしくお願いします〜


YuO  2006-08-11 04:11:25  No: 62708

__value classにおいて,デフォルトコンストラクタは定義がなくてもあるものとされます。

MSDNをちゃんと読みましょう。
http://msdn.microsoft.com/library/ja/vcmxspec/html/vcManagedExtensionsSpec_5.asp


清原  2006-08-12 06:36:13  No: 62709

YuOさん、ご指導、ありがとうございます。
MSDNに乗ってるのは本当に詳しくて  役立ちました。

お騒ぎしました  m(_ _)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加