Другое С/С++ Вопрос - Ответ

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
struct Contact
{
    string name, phone, namePlusPhone;
    Contact(string& _name, string& _phone) :name(_name), phone(_phone), namePlusPhone(_phone + ": " + _name) {};
};
..
set <Contact> contacts;
contacts.insert(Contact("Jack Nilson", "+841414455"));
1664729169813.png
патему
 

chapo

tg/inst: @moujeek
Всефорумный модератор
9,211
12,558
Почему диалог не отображается еще раз после нажатия на кнопку в этом же диалоге? При этом в консоль выводит "Dialog shown!"
C++:
void ShowDialog() {
    string Text = "";

    for (int GangIndex = 0; GangIndex < Settings.size(); GangIndex++) {
        Text.append(Settings[GangIndex].name + "\t" + (Settings[GangIndex].enabled ? "ON" : "OFF") + "\n");
    }
    SF->getSAMP()->getDialog()->ShowDialog(DialogId, 2, "dialogtitle", (char*)Text.c_str(), "TOGGLE", "X");
    cout << "Dialog shown!" << endl;
}


void CALLBACK dialogCallback(int dialogId, int buttonId, int listItem, const char* input) {
    if (dialogId == DialogId && buttonId == 1) {
        if (listItem >= 0 && listItem <= Settings.size()) {
            Settings[listItem].enabled = !Settings[listItem].enabled;
            cout << "State: " + (Settings[listItem].enabled ? "ON" : "OFF") << endl;
        }
        ShowDialog();
    }
 

#Northn

Известный
Всефорумный модератор
2,659
2,602
Почему диалог не отображается еще раз после нажатия на кнопку в этом же диалоге? При этом в консоль выводит "Dialog shown!"
C++:
void ShowDialog() {
    string Text = "";

    for (int GangIndex = 0; GangIndex < Settings.size(); GangIndex++) {
        Text.append(Settings[GangIndex].name + "\t" + (Settings[GangIndex].enabled ? "ON" : "OFF") + "\n");
    }
    SF->getSAMP()->getDialog()->ShowDialog(DialogId, 2, "dialogtitle", (char*)Text.c_str(), "TOGGLE", "X");
    cout << "Dialog shown!" << endl;
}


void CALLBACK dialogCallback(int dialogId, int buttonId, int listItem, const char* input) {
    if (dialogId == DialogId && buttonId == 1) {
        if (listItem >= 0 && listItem <= Settings.size()) {
            Settings[listItem].enabled = !Settings[listItem].enabled;
            cout << "State: " + (Settings[listItem].enabled ? "ON" : "OFF") << endl;
        }
        ShowDialog();
    }
потому что это локальный диалог, а не серверный. dialogCallback не вызовется
 

chapo

tg/inst: @moujeek
Всефорумный модератор
9,211
12,558
потому что это локальный диалог, а не серверный. dialogCallback не вызовется
он вызывается, мб я плохо описал проблему:
1. есть команда, допустим /menu
2. после ввода команды диалог отображается и функция dialogCallback выполняется (значения меняются, в консоль выводится инфа)
сама проблема: после нажатия на кнопку в диалоге мне надо открыть диалог еще раз, функция ShowDialog выполняется (в консоль выводится текст), но сам диалог не появляется.
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,760
4,891
он вызывается, мб я плохо описал проблему:
1. есть команда, допустим /menu
2. после ввода команды диалог отображается и функция dialogCallback выполняется (значения меняются, в консоль выводится инфа)
сама проблема: после нажатия на кнопку в диалоге мне надо открыть диалог еще раз, функция ShowDialog выполняется (в консоль выводится текст), но сам диалог не появляется.
на момент нажатия на кнопку диалог все еще считается открытым сампом емнип
 
  • Нравится
Реакции: ARMOR

Chilim

Потрачен
71
6
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет,такая проблема, не могу найти сборку решений х86 для OpenCv а самому собирать не охото,может у кого то есть и сможет поделиться? буду благодарен")
 
  • Ха-ха
  • Нравится
Реакции: Barsyk и legendabrn
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для std::set нужны оператор сравнения для сортировки.

Решение - использовать std::unordered_set, или написать операторы сравнения(==;!=;<;>;)
я этот код сократил и кинул только нужное для понимания, дело в не в этом, оно почему то не может использовать значение по ссылке, когда убираю & - программа компилируется
C++:
struct Contact
{
    string name, phone, namePlusPhone;
    Contact(string& _name, string& _phone) :name(_name), phone(_phone), namePlusPhone(_name + ": " + _phone) {};
    operator const char* () const
    {
        return namePlusPhone.c_str();
    }
    bool operator == (const Contact& item) const
    {
        return (item.name  == this->name);
    }
    bool operator < (const Contact& item) const
    {
        return (item.name > this->name);

    }
};


int main()
{

    set <Contact> contacts;
    contacts.insert(Contact("Jack Nilson", "+841414455"));
    contacts.insert(Contact("Hardi Jel", "+311414141"));
    contacts.insert(Contact("Andy Kil", "+42523412"));
    contacts.insert(Contact("Leon Brawl", "+532342342342"));
    contacts.insert(Contact("Jackson Will", "+32466666621"));
    contacts.insert(Contact("Andrew Redmond", "+41414345346"));
    contacts.insert(Contact("Julia Breed", "+54312346236"));
}
 
Последнее редактирование:

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,760
4,891
я этот код сократил и кинул только нужное для понимания, дело в не в этом, оно почему то не может использовать значение по ссылке, когда убираю & - программа компилируется
C++:
struct Contact
{
    string name, phone, namePlusPhone;
    Contact(string& _name, string& _phone) :name(_name), phone(_phone), namePlusPhone(_name + ": " + _phone) {};
    operator const char* () const
    {
        return namePlusPhone.c_str();
    }
    bool operator == (const Contact& item) const
    {
        return (item.name  == this->name);
    }
    bool operator < (const Contact& item) const
    {
        return (item.name > this->name);

    }
};


int main()
{

    set <Contact> contacts;
    contacts.insert(Contact("Jack Nilson", "+841414455"));
    contacts.insert(Contact("Hardi Jel", "+311414141"));
    contacts.insert(Contact("Andy Kil", "+42523412"));
    contacts.insert(Contact("Leon Brawl", "+532342342342"));
    contacts.insert(Contact("Jackson Will", "+32466666621"));
    contacts.insert(Contact("Andrew Redmond", "+41414345346"));
    contacts.insert(Contact("Julia Breed", "+54312346236"));
}
в конструкторе ссылка константная должна быть чтобы туда временное значение можно было сконструировать
 

MeG@LaDo[N] ^_^

Известный
280
322
у меня есть текст в пастебин и мне нужно отправить GET запрос через boost и записать текст в переменную, как можно отправить запрос через эту либу? чекал
в интернете темы но не особо понял
 

Sadow

Известный
1,412
587
Я захотел запустить приложение которое создаётся при компиляции .cpp файла и там какие то иероглифы вместо русского текста. Вот сам код:
C++:
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RU");
    int a, b, c;
    int d = 0;
    cout << "Запуск программы..." << endl;
    while (d<101)
    {
        cout << "Запуск программы " << d << "%" << endl;
        d++;
    }
    if (d=100)
    {
        cout << "Программа запущена!" << endl;
    }
    cout << "Введите два числа" << endl;
    cin >> a >> b;
    cout << "Выберите вариант который вам подходит:\n1. Сложение\n2. Вычитание\n3. Умножение\n4. Деление" << endl;
    cin >> c;
    switch (c)
    {
        case 1:
        cout << "Ответ: " << a + b << endl;
        break;
        case 2:
        cout << "Ответ: " << a - b << endl;
        break;
        case 3:
        cout << "Ответ: " << a * b << endl;
        break;
        case 4:
        cout << "Ответ: " << a / b << endl;
        break;
        default:
        cout << "Данный пункт отсутствует в списке!" << endl;
        break;
    }
}
 

ARMOR

Я креветка
Модератор
5,064
7,383
Я захотел запустить приложение которое создаётся при компиляции .cpp файла и там какие то иероглифы вместо русского текста. Вот сам код:
C++:
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RU");
    int a, b, c;
    int d = 0;
    cout << "Запуск программы..." << endl;
    while (d<101)
    {
        cout << "Запуск программы " << d << "%" << endl;
        d++;
    }
    if (d=100)
    {
        cout << "Программа запущена!" << endl;
    }
    cout << "Введите два числа" << endl;
    cin >> a >> b;
    cout << "Выберите вариант который вам подходит:\n1. Сложение\n2. Вычитание\n3. Умножение\n4. Деление" << endl;
    cin >> c;
    switch (c)
    {
        case 1:
        cout << "Ответ: " << a + b << endl;
        break;
        case 2:
        cout << "Ответ: " << a - b << endl;
        break;
        case 3:
        cout << "Ответ: " << a * b << endl;
        break;
        case 4:
        cout << "Ответ: " << a / b << endl;
        break;
        default:
        cout << "Данный пункт отсутствует в списке!" << endl;
        break;
    }
}
Ошибка где-то у тебя, у меня всё хорошо запускает.
1665308594876.png


Ещё попробуй метод из этой темы, возможно поможет: