grig_p
grig_pNov. 22, 2019, 9:50 a.m.

Указатель на элемент QList

Здравствуйте!
Вопрос может быть детский но все таки.
Есть структура, список этих структур и заполнение :

struct MyStruct
{
    int a;
    QString b;
}

QList<MyStruct> structList;

MyStruct str1, str2;
str1.a = 2;
str1.b = "hi";
str2.a = 5;
str2.b = "by";
structList << str1 << str2;

Далее, работая с этим списком, я должен передать в другое место указатель на элемент списка, не копию (будет использован конструктор копирования), а именно указатель:

void myMethod(MyStruct* str);

Как передать первый или второй элементы QList в этот метод?
Заранее большое спасибо.

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

5
Evgenii Legotckoi
  • Nov. 24, 2019, 5:41 a.m.

Добрый день.

Это можно сделать так

myMethod(&structList[0]);

Но может вам лучше использовать константную ссылку вместо указателя? Просто вы не говорите, будете ли модифицировать структуру, либо вам потребуется только чтение.

Вы могли бы сделать так

void myMethod(const MyStruct& str);

myMethod(structList.at(0));
    grig_p
    • Nov. 25, 2019, 12:34 a.m.

    Евгений, спасибо.
    Я склоняюсь скорее ко второму варианту. Структура модифицироваться не будет

      Evgenii Legotckoi
      • Nov. 25, 2019, 3:09 a.m.

      Тогда действительно второй вариант, поскольку поиск указателя более длительная операция, чем передача по константной ссылке. Тем более, что это в принципе рекомендуемый вариант.

        ИП
        • Nov. 27, 2019, 11:38 p.m.
        • (edited)

        Еще можно использовать вот такой способ:

        QList<MyStruct> structList;
        MyStruct &currentStr = structList[i];
        //ну или константная ссылка
        const MyStruct &currentStr = structList[i];
        //далее переменную можно использовать как угодно
        myMethod(currentStr);
        qDebug() << currentStr.b;
        

        Не забывайте про range based for цикл если нужно перебрать все элементы листа и при этом не нужен индекс элемента:

        QList<MyStruct> structList;
        for (const MyStruct & currentStr : structList)
        {
            myMethod(currentStr);
        }
        

        Если элемент нужно изменять внутри цикла, тогда убираем ключевое слово const

          grig_p
          • Nov. 28, 2019, 1:02 a.m.

          Спасибо, Игорь!

            Comments

            Only authorized users can post comments.
            Please, Log in or Sign up
            AD

            C ++ - Test 004. Pointers, Arrays and Loops

            • Result:50points,
            • Rating points-4
            m

            C ++ - Test 004. Pointers, Arrays and Loops

            • Result:80points,
            • Rating points4
            m

            C ++ - Test 004. Pointers, Arrays and Loops

            • Result:20points,
            • Rating points-10
            Last comments
            i
            innorwallNov. 11, 2024, 10:12 p.m.
            Django - Tutorial 055. How to write auto populate field functionality Freckles because of several brand names retin a, atralin buy generic priligy
            i
            innorwallNov. 11, 2024, 6:23 p.m.
            QML - Tutorial 035. Using enumerations in QML without C ++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
            i
            innorwallNov. 11, 2024, 3:50 p.m.
            Qt/C++ - Lesson 052. Customization Qt Audio player in the style of AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
            i
            innorwallNov. 11, 2024, 2:19 p.m.
            Heap sorting algorithm The role of raloxifene in preventing breast cancer priligy precio
            i
            innorwallNov. 11, 2024, 1:55 p.m.
            PyQt5 - Lesson 006. Work with QTableWidget buy priligy 60 mg 53 have been reported by Javanovic Santa et al
            Now discuss on the forum
            i
            innorwallNov. 11, 2024, 8:56 p.m.
            добавить qlineseries в функции buy priligy senior brother Chu He, whom he had known for many years
            i
            innorwallNov. 11, 2024, 10:55 a.m.
            Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
            9
            9AnonimOct. 25, 2024, 9:10 a.m.
            Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

            Follow us in social networks