教えて! goo のコンテンツに対する取り組みについて

C#にて、別クラスの関数を使用する方法を教えてほしいです。

下記のような、構造体を受け取るメソッドを作りました。

*****************************
private struct MyPoint
{
public int x;
public int y;
}

private void proc1(MyPoint pt)
{
MessageBox.Show("座標:" ; pt.x + "," + pt.y + "実行結果");
}

private void button1_Click(object sender ,System.EventArgs e)
{

MyPoint pt;
pt.x = 10;
pt.y = 20;
proc(pt);
}
*****************************

別のフォームのクラスから、proc1を呼び出したいのですが、やり方がわかりません。
どうか、教えてください。

gooドクター

A 回答 (3件)

同じ定義をしたとしても別の名前空間に書いた構造体は同一とはみなされません。



呼び出し先クラスでの構造体を private では無く、public で宣言して下さい。

呼び出し元では、

MyClass.MyPoint pt;

のようにして実体を作ります。
    • good
    • 4
この回答へのお礼

ありがとうございました。できました!

お礼日時:2006/09/12 13:28

proc1の定義と呼び出しで、引数の型が合わないということです。



定義ではMyClass.MyPoint、呼び出しではForm2.MyPoint2になっていますよね。
    • good
    • 4
この回答へのお礼

修正しましたが、それでも、うまくいきませんでした。上記の方の回答を参考にして、できました。どうもありがとうございました。

お礼日時:2006/09/12 13:29

>private void proc1(MyPoint pt)


public void proc1(MyPoint pt)

この関数のクラスがMyClassだとすれば、

MyClass mc=new MyClass();
mc.proc1(...);

この回答への補足

早速のご回答、ありがとうございます。しかし、エラーがでました。
呼び出し側を以下のようにコーディングしたのですが、

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

public struct MyPoint2
{
public int x;
public int y;
}


private void button1_Click(object sender, EventArgs e)
{
MyPoint2 pt2;

pt2.x = 30;
pt2.y = 40;

MyClass frm1 = new MyClass();
frm1.proc1(pt2);
}
}


'WindowsApplication1test.MyClass.proc1(WindowsApplication1test.MyClass.MyPoint)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。

'WindowsApplication1test.Form2.MyPoint2' から 'WindowsApplication1test.MyClass.MyPoint' に変換できません。

と2つのエラーが出ます。すみません、教えてください。

補足日時:2006/09/12 12:46
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング