Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
D1zarm
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 5
#1

E2451: Undefined symbol 'A' - C++ Builder

10.05.2018, 16:32. Просмотров 179. Ответов 12
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    size1=StrToInt(Form1->Edit1->Text);
    size2=StrToInt(Form1->Edit2->Text);
 
    Form1->Label6->Caption = "";
    Form1->Label7->Caption = "";
    Matrix A(size1,size2);
    A.Display1();
    A.Display2();
 
}
 
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 
    A.Reload();
    A.Add();
}
Компилирую программу и оно выдает данную ошибку:
E2451 Undefined symbol 'A'
Unit1.cpp(41): parsing: void _fastcall TForm1::Button2Click(TObject *)

Помогите пожалуйста с решением данной проблемы, я уже все перепробовал, ничего не помогает. Методы класса работают нормально, если прописываю их там же, где и определял Matrix A.

Заранее благодарю за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2018, 16:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос E2451: Undefined symbol 'A' (C++ Builder):

E2451 undefined symbol - C++ Builder
Помогите исправить ошибку строчка: void TForm1::compute(ang, scl, inv, flw) текст ошибки: e2451 undefined symbol но ang уже...

E2451 Undefined symbol - C++ Builder
Unit2.cpp(45): E2451 Undefined symbol 'Memo1' Unit2.cpp(61): E2268 Call to undefined function 'strcat_s' Unit2.cpp(100): E2451...

E2451 Undefined symbol 'PaintBox1' - C++ Builder
Здравствуйте. Как можно использовать PaintBox вне событий? Лучше бы как лишние функции и переменные закинуть как-то в другой файл. ...

Ошибка E2451 Undefined symbol - C++ Builder
Начинаю учится в с++ Builder 6, компилирую программу: //--------------------------------------------------------------------------- ...

E2451 Undefined symbol 'Edit1' - C++ Builder
Не могу разобраться. В первый раз пишу программы на c++ Builder 6. Какой бы код не написал , выдает ошибку Unit1.cpp(25): E2451...

E2451 Undefined symbol 'List' - C++ Builder
Есть вот такой кусок кода и есть три ошибки с листами. Помогите или подскажите что нужно делать ...

12
Si14
27 / 27 / 20
Регистрация: 26.07.2015
Сообщений: 67
10.05.2018, 18:13 #2
Скорее все 'A' набрано на русской раскладке или в юникод кодировке. Просто сотри и набери заново на английской раскладке.
0
S0lexV
21 / 21 / 3
Регистрация: 27.07.2011
Сообщений: 255
10.05.2018, 18:14 #3
Обращение к классу из разных файлов
1
Lelik-pahan
1360 / 779 / 94
Регистрация: 25.11.2009
Сообщений: 1,590
Завершенные тесты: 1
10.05.2018, 18:17 #4
D1zarm, Matrix A объявлена внутри Button1Click и, соответственно, видна только в пределах этой функции.
Когда ты обращаешься к A в Button2Click, естественно выходит ошибка.
0
D1zarm
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 5
10.05.2018, 18:22  [ТС] #5
Lelik-pahan,Спасибо, кэп, ваша лодка уже готова..
Я сам знаю в чем проблема, я не могу просто понять как ее пофиксить
0
Si14
27 / 27 / 20
Регистрация: 26.07.2015
Сообщений: 67
10.05.2018, 18:36 #6
Вместо того, что бы дерзить, лучше бы взял учебник по C/C++ и начал курить раздел "время жизни и области видимости переменных"
0
D1zarm
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 5
10.05.2018, 18:50  [ТС] #7
Какая польза от ваших обоих ответов, если вы мне говорите абсолютно очевидные вещи? Если бы я не знал суть ошибки я бы спросил именно про нее,но вопрос поставлен про другое. Вы тупо льете воду, вместо того, чтобы дать нормальный ответ как S0lexV
0
d7d1cd
201 / 130 / 37
Регистрация: 30.06.2011
Сообщений: 1,222
Завершенные тесты: 1
10.05.2018, 19:18 #8
Цитата Сообщение от D1zarm Посмотреть сообщение
Я сам знаю в чем проблема, я не могу просто понять как ее пофиксить
Ты не знаешь в чем проблема, тебе так только кажется. Тебе ясно сказали, что переменная А объявлена внутри функции Button1Click. Это значит, что она "живет" только там. Ты же ее хочешь использовать в функции Button2Click. В этой функции нет переменной А.
Объяви переменную А глобально или сделай ее членом класса.
0
Si14
27 / 27 / 20
Регистрация: 26.07.2015
Сообщений: 67
10.05.2018, 19:41 #9
Так как размер матрицы задается внутри Button1Click следует поступить так. Объявить А глобально, а код из конструктора А перекинуть в метод Init. Если не разберёшься, скидывай и код класса Matrix
0
Lelik-pahan
1360 / 779 / 94
Регистрация: 25.11.2009
Сообщений: 1,590
Завершенные тесты: 1
10.05.2018, 22:02 #10
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ

Не по теме:

Цитата Сообщение от D1zarm Посмотреть сообщение
Какая польза от ваших обоих ответов, если вы мне говорите абсолютно очевидные вещи?
Из твоей постановки вопроса совершенно не очевидно, понимаешь ты в чём проблема или нет. И то, что ты экспериментальным путём определил, что
Цитата Сообщение от D1zarm Посмотреть сообщение
Методы класса работают нормально, если прописываю их там же, где и определял Matrix A
вовсе не означает, что ты понимаешь что такое область видимости, локальные и глобальные переменные. А если бы знал, то и знал бы
Цитата Сообщение от D1zarm Посмотреть сообщение
как ее пофиксить



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
Matrix *A = NULL;
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    size1 = StrToInt(Form1->Edit1->Text);
    size2 = StrToInt(Form1->Edit2->Text);
 
    Form1->Label6->Caption = "";
    Form1->Label7->Caption = "";
    
    if (!A)
        A = new Matrix(size1, size2);
    A.Display1();
    A.Display2(); 
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{ 
    if (A)
    {    
        A.Reload();
        A.Add();
    }
}
И не забудь потом где-нибудь сделать delete A;
1
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25539 / 17092 / 5419
Регистрация: 22.10.2011
Сообщений: 30,267
Записей в блоге: 7
11.05.2018, 01:28 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Если уже
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Matrix *A
, тогда

C++
1
2
3
4
5
6
    A->Display1();
    A->Display2(); 
 
// ...
        A->Reload();
        A->Add();
2
Lelik-pahan
11.05.2018, 09:01
  #12

Не по теме:

Цитата Сообщение от volvo Посмотреть сообщение
тогда
Да, конечно. спасибо.

0
D1zarm
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 5
17.05.2018, 16:25  [ТС] #13
Всем огромное спасибо за помощь, примите извинения за мое поведение крикливого, агрящегося школьника, просто день был отвратный...
0
17.05.2018, 16:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2018, 16:25
Привет! Вот еще темы с ответами:

Ошибка E2451 Undefined symbol 'Form4' - C++ Builder
Добрый день, программисты. Я новичок в программировании и у меня возник такой вопрос: я создал формы , кнопки. С помощью кнопок...

[C++ Error](248): E2451 Undefined symbol 'FFTPeacks' - C++ Builder
Здравствуйте, пишу свой плеер с использованием bass.dll Завис на визуализации. Вот есть код: void draw(); { float...

[C++ Error] Unit1.cpp(28): E2451 Undefined symbol 'MarkText' - C++ Builder
#include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- ...

Найти причины возникновения ошибки E2451 Undefined symbol 'tank_r' - C++ Builder
Решил написать игрулю, о танках и наткнулся на проблему с поворотами. нашел ответ и немного переписал код. выдает ошибку: Unit1.cpp(68):...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru