Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
klynxe
11 / 11 / 4
Регистрация: 07.09.2012
Сообщений: 542
#1

Неверная передача значения - C++

01.02.2014, 00:43. Просмотров 638. Ответов 22
Метки нет (Все метки)

Есть
C++
1
typedef enum {a, b, c, d} my;
есть функция
C++
1
void MyF(my x)
ее вызов в виде
C++
1
2
MyF(0);
MyF(a);
работает нормально

А вызов в виде
C++
1
2
my temp=a;
MyF(temp);
или

C++
1
2
int temp=1;
MyF(temp);
не работает, почему? То есть компилируется, но значение передается неверное
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 00:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неверная передача значения (C++):

Передача значения и передача переменной - C++
объясните мне разницу...и с кодами пожалуйста...думаю передача значений это через ссылки\указатели,а передача переменных-переменных ...

Передача значения по ссылке - C++
1. Объявите (в отельном заголовочном файле) и реализуйте (в другом файле) процедуры (они не возвращают значений!) согласно варианту. 2....

Передача значения в функцию - C++
Здравствуйте. Сам только начал изучать C++. В общем,никак не могу передать значение login в функцию. #include <iostream> ...

Передача значения в функцию - C++
Столкнулся с такой вот проблемой : есть функция (func_1) в которую передаются три параметра (два числа и массив) , она делает своё дело ,...

Передача значения по ссылке - C++
Даны два файла: fun.cpp: #include <math.h> double summa(float x, float eps, double& psl, int& k) { double s=0, sl=1/x, psl=0; int...

Передача значения переменной по ссылке - C++
Есть событие, которое происходит в методе someMethod, при выполнении которого программа вылетает. Методу someMethod нужно получить...

22
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
01.02.2014, 00:47 #2
klynxe, а почему должно работать?
0
klynxe
11 / 11 / 4
Регистрация: 07.09.2012
Сообщений: 542
01.02.2014, 00:52  [ТС] #3
Цитата Сообщение от metaluga145 Посмотреть сообщение
klynxe, а должно работать? у Вас типы данных не совпадают. int это не my, два разных типа. Видимо, при передаче int происходит неявное преобразование.
А вариант
my temp=a;
MyF(temp);
?

Добавлено через 49 секунд
И при вызове MyF(0); как мне передать 0 через переменную?
0
abit
271 / 270 / 35
Регистрация: 03.02.2013
Сообщений: 760
01.02.2014, 00:55 #4
вввв
Цитата Сообщение от klynxe Посмотреть сообщение
Есть
typedef enum {a, b, c, d} my;
есть функция void MyF(my x)
ее вызов в виде
MyF(0);
MyF(a);
работает нормально

А вызов в виде
my temp=a;
MyF(temp);

или

int temp=1;
MyF(temp);

не работает, почему? То есть компилируется, но значение передается неверное
0
Kuzia domovenok
2030 / 1874 / 168
Регистрация: 25.03.2012
Сообщений: 6,451
Записей в блоге: 1
01.02.2014, 00:55 #5
И что ты ожидаешь на выходе? Что делает функция? Может ты от неё не того результата ожидаешь?
0
Avazart
Эксперт С++
7233 / 5429 / 303
Регистрация: 10.12.2010
Сообщений: 24,125
Записей в блоге: 17
01.02.2014, 00:57 #6
Цитата Сообщение от klynxe Посмотреть сообщение
C++
1
typedef enum {a, b, c, d} my;
Зачем тебе typedef ?

C++
1
2
enum MyEnumType{a, b, c, d};
MyEnumType MyEnumVar;
0
klynxe
11 / 11 / 4
Регистрация: 07.09.2012
Сообщений: 542
01.02.2014, 01:01  [ТС] #7
Цитата Сообщение от Avazart Посмотреть сообщение
Зачем тебе typedef ?
Да мне он и не нужен, это файл БД с таким описанием...
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.02.2014, 01:02 #8

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
Зачем тебе typedef ?
наследие си?


klynxe, конкретный код приведите. int не конвертится в enum.
0
klynxe
11 / 11 / 4
Регистрация: 07.09.2012
Сообщений: 542
01.02.2014, 01:02  [ТС] #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
И что ты ожидаешь на выходе? Что делает функция? Может ты от неё не того результата ожидаешь?
У меня после выполнения этой функции описанными выше вариантами (первыми 2) нормально все работает (вторыми 2) БД вырубается
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.02.2014, 01:03 #10
Цитата Сообщение от klynxe Посмотреть сообщение
И при вызове MyF(0); как мне передать 0 через переменную?
Вероятно должно быть:
C++
1
2
MyF( a );
MyF( my::a ); // C++11
0
klynxe
11 / 11 / 4
Регистрация: 07.09.2012
Сообщений: 542
01.02.2014, 01:11  [ТС] #11
Цитата Сообщение от Tulosba Посмотреть сообщение
klynxe, конкретный код приведите. int не конвертится в enum.
C++
1
2
3
4
5
typedef enum {
    ddlChar, ddlUChar, ddlWChar, ddlInt16, ddlUInt16, ddlInt32, ddlUInt32,
    ddlInt64, ddlUInt64, ddlFloat, ddlDouble, ddlDB_ADDR, ddlBLOB, ddlStruct,
    ddlInt8, ddlUInt8, ddlDate, ddlTime, ddlTimestamp, ddlBCD
} DDL_FIELD_TYPE;
прототип функции
C++
1
2
int16 ddlCreateField(HDDL hRec, const char *name, DDL_FIELD_TYPE type, 
const uint16 *dims, const char *cmpfcn, HDDL *hField)
речь идет о параметре DDL_FIELD_TYPE type
вызов
C++
1
ddlCreateField(hddlRec, "long_fld", ddlLong, NULL, NULL, &hfld2);
работает нормально так же как
C++
1
ddlCreateField(hddlRec, "long_fld", 0, NULL, NULL, &hfld2);
в мне надо этот параметр передать в переменной
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.02.2014, 01:16 #12
Цитата Сообщение от klynxe Посмотреть сообщение
C++
1
ddlCreateField(hddlRec, "long_fld", 0, NULL, NULL, &hfld2);
в каком компиляторе это у вас работает?
0
klynxe
11 / 11 / 4
Регистрация: 07.09.2012
Сообщений: 542
01.02.2014, 01:18  [ТС] #13
Цитата Сообщение от Tulosba Посмотреть сообщение
Цитата Originally Posted by klynxe View Post
И при вызове MyF(0); как мне передать 0 через переменную?
Вероятно должно быть:
Код C++
1
2
MyF( a );
MyF( my::a ); // C++11
А переменную какого типа создать?

Добавлено через 42 секунды
Цитата Сообщение от Tulosba Посмотреть сообщение
каком компиляторе это у вас работает?
билдер 2006
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.02.2014, 01:22 #14
Цитата Сообщение от klynxe Посмотреть сообщение
А переменную какого типа создать?
типа, которого enum:
C++
1
2
DDL_FIELD_TYPE type = ddlDouble;
ddlCreateField(hddlRec, "long_fld", type, NULL, NULL, &hfld2);
Добавлено через 2 минуты
Цитата Сообщение от klynxe Посмотреть сообщение
билдер 2006
Может быть Builder6 ? Хотя 2006 вроде тоже есть, судя по вики.
В любом случае, int не должен конвертиться (тем более неявно) в enum.
1
klynxe
11 / 11 / 4
Регистрация: 07.09.2012
Сообщений: 542
01.02.2014, 01:25  [ТС] #15
Цитата Сообщение от Tulosba Посмотреть сообщение
DDL_FIELD_TYPE type = ddlDouble; ddlCreateField(hddlRec, "long_fld", type, NULL, NULL, &hfld2);
Не работает, пробовал...
Цитата Сообщение от Tulosba Посмотреть сообщение
Builder6
А не одно и тоже разве? Я думаю это типа 6 билдер в 2006 году, не?
0
01.02.2014, 01:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2014, 01:25
Привет! Вот еще темы с ответами:

Передача значения в asm вставку - C++
Есть код: int d = 7; _asm { PUSH 1 PUSH d } Как передать значение переменной d в asm вставку, именно цифру...

Передача значения переменной в IplImage - C++
Есть данные в файле с названием изображений которые нужно рассматривать. Данные названия получаю таким образом: std::string file1,file2; ...

Передача значения из поля структуры в функцию - C++
Здравствуйте, у меня возникла проблема - у меня есть структура: struct game { char name_horse; char name_human; int...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.