#c #pointers #struct #constants
#c #указатели #struct #константы
Вопрос:
Я не могу присвоить значение константе внутри структуры, следуйте коду:
#include <iostream>
#include <stdio.h>
typedef struct
{
float a;
float b;
float c;
float intensity;
} PointXYZI;
typedef struct structParent{
int x;
int y;
const PointXYZI* xyzi;
} structParent;
int main()
{
float o = 10.f, p = 5.0f, z = 96.0f;
PointXYZI points = {o, p, z};
const structParent *data = {0,0, amp;points};
std::cout << " *-* " << data.xyzi->c << std::endl;
std::cout << " *-* " << points.a << std::endl;
return 0;
}
Я получаю следующую ошибку с этим кодом:
ошибка: скалярному объекту ‘data’ требуется один элемент в инициализаторе const structParent *data = {0,0, amp;points};
Спасибо…
Комментарии:
1.
const structParent *data
это указатель — вам, вероятно, нужен просто объектconst structParent data
2. Да, но я должен использовать данные в качестве указателя в функции
3. Вы могли бы использовать оператор address-of для передачи его в функцию (
amp;data
) — точно так же, как вы делаете сpoints
. Или, если вы настаиваете на сохранении его в виде необработанного указателя, вы должны создать объект, используяnew structParent
4. Следуйте функции someFunction(const dwLidarDecodedPacket* packet, dwLidarAccumulatorHandle_t obj);
5. Я не знаю, что вы пытаетесь сказать этим комментарием
Ответ №1:
Поясняемая примером версия ответа @UnholySheep заключается в следующем.
void someFunc(const structParent amp;x)
// ^^^^^^
{
std::cout << " @_@ " << x.xyzi->c << std::endl;
}
int main()
{
float o = 10.f, p = 5.0f, z = 96.0f;
PointXYZI points = {o, p, z, 0};
// ^^^^^
const structParent data = {0,0, amp;points};
// ^^^
std::cout << " *-* " << data.xyzi->c << std::endl;
std::cout << " *-* " << points.a << std::endl;
someFunc(data);
// ^^^^^^^
return 0;
}
Комментарии:
1. Спасибо. Но это не решило мою проблему. Позже я опубликую решение, подписавшись на @UnholySheep