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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MrAndrey_ka
78 / 78 / 2
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
#1

Как описать в структуре строку не через указатель - C++

19.11.2014, 23:36. Просмотров 287. Ответов 1
Метки нет (Все метки)

Есть структура
C
1
2
3
4
5
6
7
8
9
10
struct InfoBuf {
size_t Len;
char Data[]; / ???
static InfoBufType* Create(size_t Size, char* Val){
    InfoBufType* P = (InfoBufType*)new char[Size + sizeof(size_t )];
        P->Len = Size;
                memcpy(P->Data, Val, Size, Size);
        return P;
        }
    };
как видно структура должна создается только динамически с помощью метода Create, при этом выделяется память указанного размера + память для хранения переменной Len, например InfoBufType* I = InfoBufType.Create(7, "Привет") выделит 7 + 2 байт и запишет в первые 2 число 7, а начиная с третьего "Привет". А через I можно обратится к Len и дата но компилятор выдает предупреждение
warning C4200: нестандартное расширение: массив нулевого размера в структуре (объединении)
1> Невозможно создать конструктор копии или оператор присвоения копии, когда UDT содержит массив нулевого размера

как можно написать такую структуру и обойти это предупреждение
(вынести переменную в метод Data() не предлагать, идея в том чтобы ее было видно при отладке, при просмотре значений переменных
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 23:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как описать в структуре строку не через указатель (C++):

Как создать указатель в структуре? - C++
Я хочу ввести имя, но под name надо выделить память? Если да то как и где(где менно прописывать выделение памяти)? #include<iostream> ...

Как описать строки в структуре? - C++
Приветствую всех :) Только учусь писать на с++ (жаль, что в универе он у нас "полностью на самостоятельном изучении"). И вот возникла...

Указатель на строку: как выводить не всю строку целиком, а конкретную букву - C++
Есть программка: #include<iostream> using namespace std; void fn_str1(int i,string str1,char *p) { p=&str1; ...

Указатель в структуре - C++
Как можно работать дальше с Abool как с массивом, обращаясь к нему как к члену структуры, т. е. D.Abool? Когда программа доходит до этого...

Указатель на функцию в структуре - C++
Есть класс: class Foo { struct Request { void ( Foo :: *operation )( Object* ); Object* object; }; std ::...

Указатель на ф-цию в структуре - C++
Привет всем, почему если объявить структуру в виде указателя и присвоить указателю на ф-цию функцию, то будет ошибка, а если объявить...

1
nmcf
5516 / 4826 / 1633
Регистрация: 14.04.2014
Сообщений: 19,600
20.11.2014, 12:57 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ну опиши массив с запасом.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 12:57
Привет! Вот еще темы с ответами:

Передать через указатель строку используя STL, и конвертировать все символы в прописные - C++
не получаеться сделать так string & n_propis(string & mas); что бы аргумент принемал указаль на строку #include <iostream> ...

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Ввод строки в структуре, заданной как char *str через scanf (ПОМОЩЬ) - C++
struct {char *str;} A; scanf("%s", &A.str); Аварийное завершение программы после ввода. Если задавать вручную значение внутри...

Как передать массив через указатель? - C++
Народ, такая проблема: при передаче в функцию массива через указатель, вся информация теряется и замещается бредом каким то, вот выдержка...


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

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

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