Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Структура в структуре

57K
02 июня 2011 года
sqwerty
34 / / 04.01.2011
Добрый вечер товарищи. Может кто подскажет, как распутать такую проблему?
- есть структура такая:
Код:
struct A{
int *a1, *a2;
struct B{
int b1, b2;
double b3;
}***b_struct;
}a_struct;

//здесь приравниваем переменную b_struct со структурой В и тут вызывается //ошибка
func(){
a_struct.b_struct=(struct B)malloc(sizeof(struct B));
}

-ошибка такая:
error not convert func::B to A::B
т.е. невозможно преобразовать структуру B в структуру A::B
как это избежать?
заранее спасибо!
14
02 июня 2011 года
Phodopus
3.3K / / 19.06.2008
компилируете как C или как C++ ?
а то код жутко C-ёвый
316
03 июня 2011 года
Alm3n
889 / / 29.05.2009
Цитата:
***b_struct


попробуй

Цитата:
(struct B***)malloc(sizeof(struct B));\

2.2K
03 июня 2011 года
REFOT
181 / / 08.04.2005
Дело в области видимости. Нужно указать, что работаем со структурой B которая определена в структуре A.
Так как может быть так:

Код:
struct A{
        int *a1, *a2;
    struct B{
        int b1, b2;
        double b3;
    }*b_struct;
} a_struct;

struct C{
        char t;
    struct B{
        int i1, i2, i3, i4, i5;
    }*b_struct;
} с_struct;

a_struct.b_struct= (struct A::B*) malloc(sizeof(struct A::B));
c_struct.b_struct= (struct C::B*) malloc(sizeof(struct C::B));


Вот рабочий код:

Код:
#include "stdafx.h"
#include <malloc.h>

struct A{
    int *a1, *a2;
    struct B{
        int b1, b2;
        double b3;
    }*b_struct;
} a_struct;

void func(){
    a_struct.b_struct= (struct A::B*) malloc(sizeof(struct A::B));
}

int _tmain(int argc, _TCHAR* argv[])
{
    func();
    return 0;
}
57K
03 июня 2011 года
sqwerty
34 / / 04.01.2011
Спасибо ребята за подсказку.
57K
06 июня 2011 года
sqwerty
34 / / 04.01.2011
Добрый день еще раз товарищи. У меня снова к Вам просьба по той же структуре. Вернее в продолжении структуры. Т.е. структура теперь такая:
Код:
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "iostream.h"
#include <malloc.h>

struct A{
    int *a1, a2;
    struct B{
        int b1, b2;
        double b3;
    }***b_struct;
} a_struct;

struct classif_AB{
       struct B *the;      
       struct classif_AB *next;
} **the_AB[3][24];  

void func(){
    a_struct.b_struct= (struct A::B***)malloc(sizeof(struct A::B));
    int i,j,k;
    struct classif_AB *node;
    node->the = &a_struct.b_struct[k][j]; //здесь вызывается ошибка
}
int main(int argc,char* argv[])
{
    func();
    return 0;
}

А ошибка такая:
error C2440: '=' : cannot convert from 'A::B *__w64 ' to 'B *'

Как это избежать?
Заранее спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог