С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.01.2016
Сообщений: 32
1

При объявлении структуры глобальной программа падает

07.04.2017, 15:52. Показов 1209. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Сразу говорю, это пример кода. Не вижу смысла все тут переписывать, я просто накидал кусок кода похожий на мой.

Вопрос почему при объявлении структуры глобальной,программа падает. Если сделать область видимости в конструкторе только то все отлично работает.

То есть

Файл .h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Con{
int x;
string s;
}
 
class MyClass{
public:
    explicit MyClass(QWidget *parent = 0);
 
...
Con c1,c2;
 
Con GetStruct();//некая функция возвращающая структуру
}
cpp-файл

C++
1
2
3
4
5
MyClass::MyClass(QWidget *parent){
 
  c1 = GetStruct();
  c2 = GetStruct();
}
При раскладе выше программа рушится то в SIGABRT(Aborted), то в сегфолт. Причем при проходе по шагам, функция получения структуры отрабатывает нормально, падает совершенно в другом месте.
Если cpp и h исправить на:
Файл .h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Con{
int x;
string s;
}
 
class MyClass{
public:
    explicit MyClass(QWidget *parent = 0);
 
...
//Con c1,c2;
 
Con GetStruct();//некая функция возвращающая структуру
}
cpp-файл

C++
1
2
3
4
5
MyClass::MyClass(QWidget *parent){
 
Con   c1 = GetStruct();
Con   c2 = GetStruct();
}
А мне нужна структура которую будет видеть весь класс,в противном случае, столько функций и переменных приходится плодить.
Пробовал через extern, typedef та же проблема, все равно падает.

Чего делаю не так????
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Блог
07.04.2017, 15:52
Ответы с готовыми решениями:

Ошибка при объявлении глобальной переменной: "Переменная не является однозначной"
#include <iostream> #include <conio.h> #include <ctime> int sec(0); int min(0); int...

Программа падает с грохотом при объявлении массива
Всем доброго времени суток, уважаемые форумчани! #include<stdlib.h> #include<time.h> void...

Программа падает при попытке записи элементов структуры
Есть такая структура struct Follower { //структура char Words; float Count; char kod; }; Она...

Инициализация структуры при объявлении
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <FONT face="Times New Roman" color=#000000 size=3>Как...

3
Эксперт С++
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
07.04.2017, 15:59 2
Цитата Сообщение от Mebiys Посмотреть сообщение
Чего делаю не так????
попробуйте так:

C++
1
2
3
4
MyClass::MyClass(QWidget *parent)
    :c1(GetStruct())
    ,c2(GetStruct())
{}
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.04.2017, 16:06 3
Цитата Сообщение от Mebiys Посмотреть сообщение
Чего делаю не так????
Показываешь "кусок кода похожий на мой". Здесь нет ничего.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
07.04.2017, 19:32 4
Цитата Сообщение от Mebiys Посмотреть сообщение
падает совершенно в другом месте.
В каком? Смотри, в отладчике, что там не так.
0
07.04.2017, 19:32
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
07.04.2017, 19:32
Помогаю со студенческими работами здесь

Ошибка при объявлении структуры
Пишу на C++ Bilder программу, которая через структуру будет выводить мне таблицу, но выдает ошибки,...

Ошибка при объявлении структуры
Ошибка при объявлении структуры # include <iostream> # include <windows.h> using namespace...

Ошибка при объявлении структуры
При компиляции ругается на заголовочный файл: ...

Объявлении глобальной переменной extern int
при объявлении глобальной переменно extern int t, ошибки undefined reference to `t'. А если я...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru