0 / 0 / 0
Регистрация: 08.10.2015
Сообщений: 4
1

Вызов вложенной функции

12.05.2017, 05:02. Показов 2423. Ответов 3

Проблема вот в чем: У меня два файла в проекте, 1 - с формой, второй - с написанным классом, а также инициализированными в нем вложенными функциями. Мне нужно в файле с формой по нажатию кнопки вызвать вложенную функцию из файла с классом. Но выдается ошибка, что "Имя "название функции" не существует в текущем контексте". При этом на классе и на функции стоит public и они оба находятся в одном пространстве имен(пространстве имен проекта). Также странно, что объект класса спокойно себе инициализировался несколькими строками ранее безо всяких ошибок. В чем может быть проблема? Заранее спасибо.

Добавлено через 43 минуты
Пардон, вот коды. Форма:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace Final_Pract
{
    public partial class KMForm : Form
    {  
        public KMForm()
        {
                      InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
private void StartBut_Click(object sender, EventArgs e)
        {
 
            List<Point> pixels = new List<Point> { };
            List<Cluster> clust = new List<Cluster> { };
            int m = Convert.ToInt32(ClusterNum.Text);
            Start(m, clust, pixels);
 
        }
и класс
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
namespace Final_Pract
{
    public struct Point
    {
        public int re, gr, bl, x, y;
        public Point(int a, int b, int c, int m, int l)
        {
            re = a;
            gr = b;
            bl = c;
            x = m;
            y = l;
        }
    };
 
    public class Cluster
    {
        public List<Point> pixels;
        public int curX, curY, curZ;//координаты текущего центроида
        public int lastX, lastY, lastZ;//координаты предыдущего центоида
        public int Size() { return pixels.Capacity; }//получаем размер вектора
        public void Add(Point pt) { pixels.Add(pt); }//Добавляем пиксель к кластеру
 
        public void Clear()
        {
            pixels.Clear();
        }
 
        public void SetCenter()
        {
            
        }
 
        public static void Bind(int k, List<Cluster> clust, List<Point> map)
        {
            
        }
 
        public static void InitialCenter(int k, List<Cluster> clusarr, List<Point> vpt)
        {
 
        }
 
        public static void Start(int k, List<Cluster> clusarr, List<Point> vpt)
        {
            InitialCenter(k, clusarr, vpt);
            int count = 0;
            for (;;)
                count++;
            {//Запускаем основной цикл
                int chk = 0;
                Bind(k, clusarr, vpt);//Связываем точки с кластерами
                for (int j = 0; j < k; j++)//Высчитываем новые координаты центроидов 
                    clusarr[j].SetCenter();
                for (int p = 0; p < k; p++)//Проверяем не совпадают ли они с предыдущими цент-ми
                    if (clusarr[p].curX == clusarr[p].lastX && clusarr[p].curY == clusarr[p].lastY && clusarr[p].curZ == clusarr[p].lastZ)
                        chk++;
                if (chk == k) return;//Если да выходим с цикла
            }
        }
    }
}
Может, поможет
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2017, 05:02
Ответы с готовыми решениями:

Странное поведение вложенной функции
Добрый день! Ситуация следующая: есть табличка &lt;table border=&quot;1px&quot;&gt; &lt;thead&gt; ...

Глобальная переменная изменяется только во вложенной функции,а за пределами остается прежней
Глобальная переменная не изменяется вне вложенной функции, нужно переменную checkName использовать...

Передача данных из вложенной функции в другую в приложении GUI без среды guide
Поясните, пожалуйста, как передать матрицу M из первой вложенной функции во вторую: 1. function...

Рекурсия: после отработки вложенной функции foreach перестает делать предыдущий обход
Всем привет! Делаю иерархию БД. Проблема в следующем: после отработки вложенной функции foreach...

3
553 / 530 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
12.05.2017, 05:40 2
Лучший ответ Сообщение было отмечено Kiriandrew как решение

Решение

Нужно заменить строку
C#
1
Start(m, clust, pixels);
на
C#
1
Cluster.Start(m, clust, pixels);
При обращении к статическому методу класса нужно использовать Имя этого класса, а потом, через точку имя метода.

Добавлено через 2 минуты
PS. В код не вникал... Возможно, что дело не только в этом. Это так, навскидку.
1
0 / 0 / 0
Регистрация: 08.10.2015
Сообщений: 4
12.05.2017, 05:48  [ТС] 3
Спасибо. Опять в трех соснах заблудился.
0
553 / 530 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
12.05.2017, 06:11 4
Цитата Сообщение от Kiriandrew Посмотреть сообщение
Опять в трех соснах заблудился.
Бывает! Не ошибается лишь тот, кто ничего не делает!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2017, 06:11
Помогаю со студенческими работами здесь

Объекты классов не видны во вложенной функции одной из классов
Такая вот проблема. Есть функция play() класса Game, где создаются объекты классов Game, Character,...

Вызов функции внутри другой функции с передачей локальной переменной по ссылке
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include &lt;iostream&gt; using...

Вызов функции из другой функции и обратно. Общие переменные функций
Всем привет. Заранее напишу, что я ещё только изучаю программирование В данной программе...

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель)
#include &lt;iostream&gt; using namespace std; template &lt;class T1&gt; class mas { public: T1 n; T1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru