新たな発見。
エラーの原因の識別子は'{ctor}'であることが判明。
括弧は強調だと思ってたんだけど、どうやらこれが全体らしい。
そしてctorとはConstrucTORの略らしい。dtorというのがデストラクタのような気がする。
ぐぐりまくった成果はこれだけ。
エラーメッセージが「error C2061: 構文エラー : 識別子 '{ctor}'」だけだから困る。
発生するのはmezapaクラスのコンストラクタが記述されている行。全てのオーバーロードで起こる。
ソリューション内に全検索かけてもかからず。
そういえば、コンストラクタから別のコンストラクタを呼び出すときって*thisに代入しなきゃいけなかったんだね。
ただ呼び出せば自分のメソッドとして機能するんだと思ってた。
それ改善したらもしかして・・・・?と思ったけど気づくの大分遅い('A`)
晒すので誰かお答え願います。
// mezapa.h #pragma once using namespace System; ref class mezapa { private: int _TypeNumber, _MezaPower; public: mezapa(); mezapa(int[]); mezapa(int, int, int, int, int, int); String^ JudgeMezapa(int[]); String^ JudgeMezapa(int, int, int, int, int, int); property System::String^ Value { System::String^ get() { return Type + MezaPower;} } property System::String^ Type { System::String^ get() { array<System::String^>^ typeList = { "格","飛","毒","地","岩","虫","ゴ","鋼","炎","水","草","電","エ","氷","ド","悪" }; return typeList[TypeNumber]; } } property int TypeNumber { int get() { return _TypeNumber;} } property int MezaPower { int get() { return _MezaPower;} } };
// mezapa.cpp #include "StdAfx.h" #include "mezapa.h" // mezapa() // 機能:: プロパティの初期化 mezapa::mezapa() { this->_TypeNumber = 0; this->_MezaPower = 30; } // mezapa(int []) // 機能:: 個体値配列を受け取り、その値に基づいた新しいめざぱクラスを作成 // // 引数 -> int kotaiti[] = 個体値配列 mezapa::mezapa(int kotaiti[]) { *this = (gcnew mezapa::mezapa()); mezapa::JudgeMezapa(kotaiti); } // mezapa(int, int, int, int, int, int) // 機能:: mezapa(int[])のオーバーロードコンストラクタ。配列ではなく数値群を受け取る // // 引数 -> int *6 = 各個体値。順番はHABSCD mezapa::mezapa(int H, int A, int B, int S, int C, int D) { *this = (gcnew mezapa::mezapa()); mezapa::JudgeMezapa(H, A, B, S, C, D); } // String^ JudgeMezapa(int kotaiti[]) // 機能:: 受け取った個体値配列からめざパのタイプと威力を判定する // // 引数 -> int kotaiti[] = 個体値配列 // 戻り値 -> 判定されためざパを「"タイプ""威力"」の書式に当てたSystem::String^型 String^ mezapa::JudgeMezapa(int kotaiti[]) { int TypeJ[6],PowerJ[6], tmp[2] = {0, 0}; int value = 1; // // タイプ&威力判定用の値を計算 // for (int i = 0; i < 6; i++) { TypeJ[i] = 0; PowerJ[i] = 0; if (kotaiti[i] % 2 == 1) TypeJ[i] = value; if (kotaiti[i] % 4 == 2 || kotaiti[i] % 4 == 3) PowerJ[i] = value; value *= 2; } // // タイプ&威力を同時に判定 // for (int i = 0; i < 6; i++) { tmp[0] += TypeJ[i]; tmp[1] += PowerJ[i]; } _TypeNumber = tmp[0] * 15 / 63; _MezaPower = tmp[1] * 40 / 63 + 30; return Value; } // String^ JudgeMezapa(int, int, int, int, int, int) // 機能:: JudgeMezapa(int[])のオーバーロード関数。配列ではなく数値群を受け取る // // 引数 -> int *6 = 各個体値。順番はHABSCD // 戻り値 -> 判定されためざパを「"タイプ""威力"」の書式に当てたSystem::String^型 String^ mezapa::JudgeMezapa(int H, int A, int B, int S, int C, int D) { int kotaiti[6] = { H, A, B, S, C, D}; return JudgeMezapa(kotaiti); }