Size: a a a

2020 July 21

AF

Aidar Fattakhov in supapro.cxx
Т-34 85
Можно ли как-нибудь запретить имплисит конвершн enum (именно enum, не enum class) в int? Флаг какой-нибудь, может быть, или #pargma, хоть что-то?
Поищи варны на это в доке своего компилятора
источник

mn

max ne max in supapro.cxx
Aidar Fattakhov
Поищи варны на это в доке своего компилятора
info g++
источник

AF

Aidar Fattakhov in supapro.cxx
Aidar Fattakhov
Поищи варны на это в доке своего компилятора
Это всеравно будет не то потлмучто правила резолюшна останутся прежними
источник

IZ

Ilia Zviagin in supapro.cxx
Т-34 85
Можно ли как-нибудь запретить имплисит конвершн enum (именно enum, не enum class) в int? Флаг какой-нибудь, может быть, или #pargma, хоть что-то?
Enum class
источник

Т8

Т-34 85 in supapro.cxx
Till Schneider
наверное, лучше использовать какой-нибудь StrongAlias
А как это сделать? Проблема в том, что этот enum объявлен в либе Qt, поэтому я не могу непосредственно с ним что-либо делать
источник

IZ

Ilia Zviagin in supapro.cxx
Т-34 85
А как это сделать? Проблема в том, что этот enum объявлен в либе Qt, поэтому я не могу непосредственно с ним что-либо делать
Назови просто функцию по другому
источник

IZ

Ilia Zviagin in supapro.cxx
Т-34 85
А как это сделать? Проблема в том, что этот enum объявлен в либе Qt, поэтому я не могу непосредственно с ним что-либо делать
Что тебе надо сделать с этим enum ?
источник

TS

Till Schneider in supapro.cxx
Т-34 85
А как это сделать? Проблема в том, что этот enum объявлен в либе Qt, поэтому я не могу непосредственно с ним что-либо делать
источник

П

Петр in supapro.cxx
Еще раз привет
Как не выходить за пределы массива? Помогите🙏
Нужно циклично сдвинуть элементы вправо
Ругается на выход за пределы массива


#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin » n;
int k = 0;
vector <int> a(n);
for (int i = 0; i < n; i++) {
 cin » a[i];
}
for (int i = 0; i < n; i++) {
 k = a[n - i - 1];
 a[n - i - 1] = a[n - i];
 a[n - i] = k;
}
a[0] = a[n];
for (int i = 0; i < n; i++) { cout « a[i] « " "; }
// put your code here
return 0;
}
источник

M

Mr.Mait in supapro.cxx
Т-34 85
А как это сделать? Проблема в том, что этот enum объявлен в либе Qt, поэтому я не могу непосредственно с ним что-либо делать
Если ты хочешь принимать енум в функцию и больше ничего, то вот так делай
template<typename T>
using isEnum = std::enable_if_t<std::is_enum<T>::value>;

template<typename T, typename = isEnum<T>>
static QString enumToQString(const T &value)
   {
  .....
   }

или с++ 17
        
template<typename T>
concept Enum = std::is_enum_v<T>;

template<Enum E>
QString enumToQString(E value) {...}
источник

AS

Anatoly Shirokov in supapro.cxx
Петр
Еще раз привет
Как не выходить за пределы массива? Помогите🙏
Нужно циклично сдвинуть элементы вправо
Ругается на выход за пределы массива


#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin » n;
int k = 0;
vector <int> a(n);
for (int i = 0; i < n; i++) {
 cin » a[i];
}
for (int i = 0; i < n; i++) {
 k = a[n - i - 1];
 a[n - i - 1] = a[n - i];
 a[n - i] = k;
}
a[0] = a[n];
for (int i = 0; i < n; i++) { cout « a[i] « " "; }
// put your code here
return 0;
}
можно купить защитный оберег или поставить граничные значения i, посмотреть что выходит, скорректировать код
источник

Т8

Т-34 85 in supapro.cxx
Ilia Zviagin
Что тебе надо сделать с этим enum ?
Я по ошибке передал enum в функцию, а она принимает QChar. Ну, и там без проблем неявно скастилось к int, после чего так же неявно вызвался конструктор. Хотелось бы такие кейсы перекрыть
источник

Т8

Т-34 85 in supapro.cxx
Ты предлагаешь написать алиасы ко всем энумам, которые есть в Qt?
источник

TS

Till Schneider in supapro.cxx
Т-34 85
Ты предлагаешь написать алиасы ко всем энумам, которые есть в Qt?
зависит от задачи, может простой самописный макрос поможет
источник

IZ

Ilia Zviagin in supapro.cxx
Т-34 85
Я по ошибке передал enum в функцию, а она принимает QChar. Ну, и там без проблем неявно скастилось к int, после чего так же неявно вызвался конструктор. Хотелось бы такие кейсы перекрыть
Ну, так не делай так, и всё!
источник

IZ

Ilia Zviagin in supapro.cxx
Т-34 85
Я по ошибке передал enum в функцию, а она принимает QChar. Ну, и там без проблем неявно скастилось к int, после чего так же неявно вызвался конструктор. Хотелось бы такие кейсы перекрыть
Между прочим, это любимая поговорка Стровстрапа.
источник

IZ

Ilia Zviagin in supapro.cxx
Т-34 85
Ты предлагаешь написать алиасы ко всем энумам, которые есть в Qt?
Просто думай, что пишешь, и всё!
источник

D

Danya in supapro.cxx
Почему в VS может не работать автодополнение? Работаю в солюшене, который был сгенерен симаком
источник

t

tamtakoe in supapro.cxx
В плюсах данные передаются по значению, но массивы, например, по ссылке. А что по поводу экземпляров классов, векторов и проч.? Есть какое-нибудь простое правило, чтобы запомнить, что по ссылке передается, а что по значению?
источник

Е

Егор in supapro.cxx
tamtakoe
В плюсах данные передаются по значению, но массивы, например, по ссылке. А что по поводу экземпляров классов, векторов и проч.? Есть какое-нибудь простое правило, чтобы запомнить, что по ссылке передается, а что по значению?
мы не в шарпе, тут как укажешь так и будет, а сишные массивы не юзай
источник