мингв просто в мусорку выкинуть надо
UPD: или просто lld заюзать попробовать
мингв просто в мусорку выкинуть надо
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"));
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 не вызоветсяПочему диалог не отображается еще раз после нажатия на кнопку в этом же диалоге? При этом в консоль выводит "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 не вызовется
на момент нажатия на кнопку диалог все еще считается открытым сампом емнипон вызывается, мб я плохо описал проблему:
1. есть команда, допустим /menu
2. после ввода команды диалог отображается и функция dialogCallback выполняется (значения меняются, в консоль выводится инфа)
сама проблема: после нажатия на кнопку в диалоге мне надо открыть диалог еще раз, функция ShowDialog выполняется (в консоль выводится текст), но сам диалог не появляется.
актуальнаПосмотреть вложение 171454 патему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"));
Для std::set нужны оператор сравнения для сортировки.актуальна
я этот код сократил и кинул только нужное для понимания, дело в не в этом, оно почему то не может использовать значение по ссылке, когда убираю & - программа компилируетсяДля std::set нужны оператор сравнения для сортировки.
Решение - использовать std::unordered_set, или написать операторы сравнения(==;!=;<;>;)
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"));
}
в конструкторе ссылка константная должна быть чтобы туда временное значение можно было сконструироватья этот код сократил и кинул только нужное для понимания, дело в не в этом, оно почему то не может использовать значение по ссылке, когда убираю & - программа компилируется
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")); }
#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;
}
}
Ошибка где-то у тебя, у меня всё хорошо запускает.Я захотел запустить приложение которое создаётся при компиляции .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; } }