Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

Ошибка в функции - C++

06.07.2015, 21:22. Просмотров 194. Ответов 2
Метки нет (Все метки)

Здорова!
Есть код функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//глобальная функция которая будет возвращать интерфейс
BOOL GetClassObject(const int nClsid,const int nIid,void** ppvObj)
{
    cout <<"ppvObj="<<&(*ppvObj)<<"\r\n";
    
 
    switch(nIid)
    {
    case IID_IMOtion:
        IMotion* p=new CSpaceship();
        *ppvObj=p;
        break;
    default:
        *ppvObj=nullptr;
        return FALSE;
    }
 
    return TRUE;
}
ну и когда компилирую программу выводится ошибка:
1>d:\visual studio 2010\projects\com_model\com_model\class.cpp(18): error C2361: пропуск инициализации "p" из-за метки "default"
1> d:\visual studio 2010\projects\com_model\com_model\class.cpp(15): см. объявление "p"
1>
1>СБОЙ построения.

Комментирую default все нормально, или если если в самый верх переношу определение p, от так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
BOOL GetClassObject(const int nClsid,const int nIid,void** ppvObj)
{
    cout <<"ppvObj="<<&(*ppvObj)<<"\r\n";
//  IMotion* p=new CSpaceship();
 
    switch(nIid)
    {
    case IID_IMOtion:
        IMotion* p=new CSpaceship();
        *ppvObj=p;
        break;
/*  default:
        *ppvObj=nullptr;*/
        return FALSE;
    }
 
    return TRUE;
}
Почему нельзя делать так как у меня есть в коде выше, че не нравится default?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2015, 21:22     Ошибка в функции
Посмотрите здесь:

Ошибка в функции - C++
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; using namespace std; int maxFunction(int a , int n) { int max=a; for(int i=0;...

Ошибка в функции - C++
У меня значения j должен изменятся от 0 до 9, а вместо этого он изменяется от 11 до 20, почему? Мой код: #include &lt;iostream&gt; ...

ошибка в функции - C++
Где может быть ошибка? и почему обычно она возникает? Компиляция... 2.cpp 2.cpp(79) : error C4430: отсутствует спецификатор...

Ошибка в функции - C++
Помогите исправить ошибку мне надо Составить функцию countX, которая, получив c и b через параметры по значению, &quot;а&quot; через глобальную...

Ошибка в функции - C++
Здравствуйте, уважаемые знатоки! Итак, ящик в студию! Внимательно прочитайте код и найдите ошибки идиота! #include &lt;iostream.h&gt; ...

Ошибка в функции - C++
Помогите пожалуйста исправить ошибку bool zero (double*Ar, int n) { bool flag = false; int j = 1; do{ if (Ar=0)...

Ошибка в функции - C++
Всем доброго суток, не могу понять где ошибка, помогите: #include &lt;iostream&gt; #define N 4 using namespace std; void sortVib(int...

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

Ошибка в функции - C++
Ошибка в функции if ((m % 2 == 0) &amp;&amp; (n % 2 == 1)) { for (int i = 0; i &lt; n; i++) for (int j = 0; j &lt; m; j++) { ...

Ошибка в функции - C++
Не могу исправить ошибки можете помочь, тут в dynamic::dynamic(int n, int m, float l) ошибки: 1.error C2109: для индекса требуется массив...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
шКодер самоучка
1783 / 1584 / 575
Регистрация: 09.10.2013
Сообщений: 3,543
Записей в блоге: 6
Завершенные тесты: 2
06.07.2015, 21:36     Ошибка в функции #2
Цитата Сообщение от ninja2 Посмотреть сообщение
Почему нельзя делать так как у меня есть в коде выше, че не нравится default?
это из-за области видимости - получается что p объявляется для всего switch а не локальная для case IID_IMOtion и есть варианты прохода, что создание этой переменной пропускается
если нужна переменная внутри case ... break, то определяйте ее в нутри операторных скобок
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//глобальная функция которая будет возвращать интерфейс
BOOL GetClassObject(const int nClsid,const int nIid,void** ppvObj)
{
    cout <<"ppvObj="<<&(*ppvObj)<<"\r\n";
    
 
    switch(nIid)
    {
    case IID_IMOtion: {
        IMotion* p=new CSpaceship();
        *ppvObj=p;
        }
        break;
    default:
        *ppvObj=nullptr;
        return FALSE;
    }
 
    return TRUE;
}
В вашем случае можно обойтись без этой переменной
C++
1
2
3
4
case IID_IMOtion: {
        *ppvObj=new CSpaceship();
        }
        break;
EugeneQ
1 / 1 / 0
Регистрация: 20.06.2014
Сообщений: 47
06.07.2015, 21:38     Ошибка в функции #3
Error C2361: пропуск инициализации "Height" из-за метки "default"
Yandex
Объявления
06.07.2015, 21:38     Ошибка в функции
Ответ Создать тему
Опции темы

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