Для нестатического поля, метода или свойства требуется ссылка на объект c# (Windows.Froms)
В классе Polynom у меня есть такие поля и конструкторы:
private string[] coff1, coff2;
private int deg1, deg2;
public Polynom(string[] coff1, string[] coff2)
{
this.coff1 = coff1;
this.coff2 = coff2;
}
public Polynom(int deg1, int deg2)
{
this.deg1 = deg1;
this.deg2 = deg2;
}
coff1 и coff2 - строчные массивы, которые хранят коэффициенты многочленов. deg1 и deg2 - степени многочленов. Также в этом классе есть метод, который складывает многочлены и возвращает строку
public string Sum(string [] coff1,string [] coff2,int deg1,int deg2){...}
Как мне уже в классе Form1 по нажатию клавиши на определенный элемент добавить в textBox строку ответа? В классе Form1 я объявляю такие же поля и пишу следующий метод:
string[] coff1, coff2;
int deg1, deg2;
private void sum_Click(object sender, EventArgs e)
{
coff1 = firstM.Text.Split(',');
coff2 = secondM.Text.Split(',');
deg1 = Convert.ToInt32(firstD.Text);
deg2 = Convert.ToInt32(secondD.Text);
answer.Text=Polynom.Sum(coff1, coff2, deg1, deg2);
}
Компилятор показывает ошибку в строке с answer "требуется ссылка на объект"
Укажите пожалуйста на ошибки с точки зрения ООП, правильно ли я написал поля и конструкторы?
Ответы (1 шт):
Не жалейте букв, вставляйте код класса целиком. Чтобы не пришлось угадывать код.
Укажите пожалуйста на ошибки с точки зрения ООП, правильно ли я написал поля и конструкторы?
Очень мало контекста, чтобы ответить точно парвильно, но очевидно, если для суммы нужны все 4 аргумента, то и конструктор должен принимать их все. А то у вас получается 2 конструктора, которые принмают данные только частично и ни одним из них вы не воспользовались.
Чтобы вызвать конструктор класса и получить его экземпляр, нужно использовать ключевое слово new.
Попробую достроить.
public class Polynom
{
private string[] coff1, coff2;
private int deg1, deg2;
public Polynom(string[] coff1, string[] coff2, int deg1, int deg2)
{
this.coff1 = coff1;
this.coff2 = coff2;
this.deg1 = deg1;
this.deg2 = deg2;
}
public string Sum()
{
string result = ...;
//...
return result;
}
}
Никакой статики здесь не должно быть.
private void sum_Click(object sender, EventArgs e)
{
string[] coff1 = firstM.Text.Split(',');
string[] coff2 = secondM.Text.Split(',');
int deg1 = Convert.ToInt32(firstD.Text);
int deg2 = Convert.ToInt32(secondD.Text);
Polynom polynom = new Polynom(coff1, coff2, deg1, deg2);
answer.Text = polynom.Sum();
}