LINUX.ORG.RU

проблема со структурой


0

2

работаю под резанной версией linux МСВС ,проблема заключается в том как вынести структуру в глобальные переменные что б можно было б к ней обращаться с других форм? такой указатель не работает: struct struct1 s1;

Телепаты в отпуске.

Zhbert ★★★★★
()
Ответ на: комментарий от Love5an

работаю в среде ПС-Конструктор там для того что б обратиться к переменной или структуре необходимо прописать их в поле public. вопрос и заключается в том что прописывать в public my_struct s1; -не подходит

Zver1987
() автор топика

Боюсь, это ты какой-то урезанный. Почитай для начала литературу по си, а то ты даже вопрос внятно задать не можешь.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Есть структура к примеру такая: typedef struct { int a, b; } my_struct; my_struct s1; необходимо обратиться к этой структуре из другой формы. Для этого неоходимо свойствах формы где прописана эта структура в поле переменные необходимо указать обращение к этой структуре...понимаю что гемморойно,но так сделан ПС-конструктор,если указываешь my_struct s1; он выдает ошибку,что не понимает тип my_struct

Zver1987
() автор топика

Пытаюсь использовать свои телепатические способности: вы пишите на плюсах, вы пишите на Qt3… Что-то мешает проникнуть мне в ваши мысли… Вы в армии? В любом случае может быть стоить попробовать добавлять заголовок в котором объявлена ваша структура по месту её использования? Например:

//содержимое mystruct.h
struct MyStruct { int MyInt; };

//содержимое main.cpp
#include "mystruct.h"

int main( void )
{
    MyStruct s;
    s.MyInt = 100;
}

KblCb ★★★★★
()
Ответ на: комментарий от Zver1987

Я одного никак не поймы: вы хотите обратиться к экземпляру структуры или видеть класс? Кстати почему структуры? Они не очень хорошо укладываются в логику Qt.

KblCb ★★★★★
()
Ответ на: комментарий от Zver1987

>Есть структура к примеру такая: typedef struct { int a, b; } my_struct; my_struct s1;

Глобальная переменная? Ок.

>необходимо обратиться к этой структуре из другой формы

А другая форма естественно в другом cpp-файле и в другой еденице трансляции?

>Для этого неоходимо свойствах формы где прописана эта структура в поле переменные необходимо указать обращение к этой структуре

Чё? Какие ещё свойства формы? Если пользуешься нестандартной терминологией (а никаких «свойств» в c++ нет), то будь добр пояснять что именно имеется ввиду.

Гадание на хрустальном шаре показало мне, что ты пользуешься каким-то гуём типа «мастера создания классов». Если это действительно так, то выкинь это, они только тратят время и запутывают.

Ещё раз попробую угадать что тебе надо: Файл form1.h

typedef struct { int a, b; } my_struct;
class Form1 /*бла-бла, унаследовано*/
{
  ...
public:
  my_struct s1;
};

Файл form2.h

class Form1;
class Form2 /*бла-бла, унаследовано*/
{
  ...
public:
  void some_method(Form1 *);
};

Файл form2.cpp

#include "form2.h"
#include "form1.h"
void Form2::some_method(Form1 *)
{
std::cout << Form1->s1.a << etd::endl;
}

legolegs ★★★★★
()

кто подпустил этого человека к МСВС? и, главное, зачем они это сделали?

jtootf ★★★★★
()
Ответ на: комментарий от alexru

>и еще пытается наезжать на всех.

Ну не, не надо наговаривать.

legolegs ★★★★★
()
Ответ на: комментарий от alexru

извиняюсь если эт так выглядело, но я ни на кого не наезжал, С++ знаю, в винде это легко делается,в ПС-Конструкторе я работаю не по своей воле, и в этой МСВС тоже(век бы их не видел). legolegs- я так и делаю как ты описал, но при компиляции выводится сообщение что в классе Form1 нет s1. Потому и решил обратиться

Zver1987
() автор топика
Ответ на: комментарий от Zver1987

>но при компиляции выводится сообщение что в классе Form1 нет s1

А поточнее? Это компилятор ругается или линкер? скопипастить ошибку можно? (с этого вообще-то надо начинать). Оно вообще-то должно работать и МСВС тут нипричём (у ВНИИС квалификации не хватит что-то тут сломать).

legolegs ★★★★★
()
Ответ на: комментарий от Zver1987

сообщение что в классе Form1 нет s1

можно исходники?

jtootf ★★★★★
()
Ответ на: комментарий от Zver1987

нашел способ:пришлось делать через отдельный хедер.в нем описать структуру и все заработало...благодарю всех кто пытался помочь

Zver1987
() автор топика
Ответ на: комментарий от Zver1987

>пришлось делать через отдельный хедер

всегда приходится делать отдельный хедер. Это суть си++, ничего не поделаешь.

legolegs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.