在我的程序中使用基本类函数。 C ++

时间:2017-07-15 05:18:58

标签: c++

新人再次来到这里,我像往常一样再次陷入困境。 (不知道我的问题标题应该是什么,但它与我认为的功能完全相关)我想让用户掷骰子并在达到20时达到最大值。但事情是我的函数{{1并不像我想要的那样将以前的卷添加起来。基本上我希望它为连续转弯存储值obj.currentRoll();,以便稍后我可以使用像value=value+roll;这样的if语句或类似的那样。我能够以更简单的方式完成它而不使用单独的类或函数,但我希望以这种方式实现相同的结果并且失败。有什么建议吗?

if (value>max){return 0}

myClass.h

  #include <iostream>
    #include "myClass.h"
    #include <string>
    #include <cstdlib>
    #include <ctime>


int main()
{
    srand(time(0));
    std::string rollCh;
    const int max=20;


    std::cout<<"Your lucky number for the day is " <<1+(rand()%30)<<"\n";

    std::cout<<"Roll the dice? (Y/N)"<< "\n";
    std::string ch;
    std::cin>>ch;
    if(ch=="Y"||ch=="y"){
        myClass obj;
        do
        {

        std::cout<<"Rolling...\n"<<"\n";
        std::cout<<"You rolled "; obj.funcRoll();std::cout<<"!!!" <<"\n";
        std::cout<<"Double checking your roll...yes it is ";obj.funcRoll();
        obj.currentRoll();

        std::cout<<"\n\n Roll again? (Y/N)"<<"\n";
        std::cin>>rollCh;
        }
while (rollCh=="Y"||rollCh=="y");

    }

    return 0;
}

myClass.cpp

#ifndef MYCLASS_H
#define MYCLASS_H


class myClass
{
    public:
        myClass();
        void funcRoll();
        int roll;
        int value;
        void currentRoll();

    };

#endif // MYCLASS_H

我先做的更方便

#include "myClass.h"
#include <iostream>
#include <cstdlib>
#include <ctime>

myClass::myClass()
{}

void myClass:: funcRoll(){
srand(time(0));
roll=1+(rand()%6);
std::cout<<roll;
}

void myClass:: currentRoll(){
value=0;
value=value+roll;
std::cout<<"\n You have rolled "<< value<<" so far";
}

1 个答案:

答案 0 :(得分:0)

value = 0;语句从currentRoll()函数移动到构造函数:

myClass::myClass() : value(0){}

std::string类型替换为charcpp.sh上的实例。