2017-02-19 20 views
-1

Ошибка возникает в первом случае if. Кажется, я не понимаю, почему это происходит. Если это не в глобальном пространстве имен, так как мой поисковик заставил меня проверить.Получение ошибки «пропуская видимое тело функции» с простым файлом заголовка

Я извиняюсь, если я не размещаю правильно, но это мой первый пост.

Заранее спасибо. Это, наверное, просто глупо, но я в настоящее время участвую.

#ifndef moveHare 
#define moveHare 

//Create new class for Hare movement roll 
class moveHare 
{ 
//Initialize variables to be used 
    int hareMovement = 0; 
    int hareRoll = rand() % 100 + 1; 

private: 
//if statements to compare the random int to the movement int 
//Error happens at first if statement.`enter code here` 
    if (hareRoll > 50) { 
     hareMovement = hareMovement + 3; 
    } 

    else if (hareRoll > 50 && hareRoll < 71) { 
     hareMovement = hareMovement + 6; 
    } 
}; 

#endif 
+4

Класс не является функцией, вам нужно будет сделать еще немного чтения. – George

+4

У вас, похоже, довольно много недоразумений о C++. Вы должны сделать шаг назад и систематически изучать язык из хорошей книги. –

+0

Этот первый комментарий только что заставил меня похлопать меня по голове. Вы совершенно правы. -_- спасибо за толкание в правильном направлении. Спасибо, Джордж. –

ответ

0

Я создал новый класс в файле заголовка вместо объявления функции. Это код исправлен, но не закончен.

Благодаря Джорджу и Бауму за то, что он показал мне очевидное для опытного набора глаз!

#pragma once 

#ifndef movement 
#define movement 





int moveHare() { 

     int hareMovement = 0; 
     int hareRoll = rand() % 100 + 1; 

     if (hareRoll > 50) { 
      hareMovement = hareMovement + 3; 
     } 

     else if (hareRoll > 50 && hareRoll < 71) { 
      hareMovement = hareMovement + 6; 
    } 
     return hareMovement; 
} 


#endif 
+0

Так же, как сторона, 'hareMovement = hareMovement + 3;' может быть сокращена до 'hareMovement + = 3;'. Второй еще никогда не будет ударить, но я получаю код не закончен :) Кроме того, здесь это не имеет никакого значения, но вы можете проверить [случайный] (http://www.cplusplus.com/reference/random /), он содержит некоторые очень красивые генераторы псевдослучайных чисел. – George

+0

Спасибо за советы. Я знал, что это может быть укорочено, но я пока не хотел, чтобы это было новичком. lol ... Я также наткнулся на более точные библиотеки генерации случайных чисел, но для этого примера обучения я почувствовал, что rand() будет работать отлично! Еще раз спасибо за помощь. В будущем вы можете увидеть еще одну из моих простых ответов, надеюсь, немного более продвинутой. Ура! –

+0

ваш 'if-else if' никогда не войдет в блок' else if', потому что если первое условие ('hareRoll> 50') является ложным, то и второе условие (' hareRoll> 50 && ... ') будет ложный. И вам не нужно '+ =', чтобы сократить его, вы можете просто написать 'hareMovement = 3' (или' hareMovement = 6'), потому что начальное значение равно '0', то есть вы все равно добавляете' 0'. – user463035818

0

Я заметил, что вы решили проблему, но я просто хотел вставить альтернативное решение. Если вы хотите сохранить класс, объявленный в YOUT вопрос, то вы можете сделать следующее, чтобы исправить код:

#ifndef moveHare 
#define moveHare 

//Create new class for Hare movement roll 
class MoveHare 
{ 
    private: 
     int hareMovement = 0; 
     int hareRoll = rand() % 100 + 1; 

    public: 
     int MoveTheHare(void); 
}; 

#endif 

Затем вы можете определить функцию следующим образом:

int MoveHare::MoveTheHare(void) 
{ 
    if (hareRoll > 50) 
    { 
     hareMovement = hareMovement + 3; 
    } 

    else if (hareRoll > 50 && hareRoll < 71) 
    { 
     hareMovement = hareMovement + 6; 
    } 

    return hareMovement; 
} 

Я просто хотел принять этот вопрос как возможность опубликовать этот метод, даже если он был опубликован ранее. Надеюсь это поможет!

Кстати, если в моем коде или в моем сообщении есть что-то, что я сделал неправильно, сообщите мне в поле для комментариев.