Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 更新布尔值时类中未更新的打印函数_C++_Function_Class_Printing_Boolean - Fatal编程技术网

C++ 更新布尔值时类中未更新的打印函数

C++ 更新布尔值时类中未更新的打印函数,c++,function,class,printing,boolean,C++,Function,Class,Printing,Boolean,所以我有一个我正在编写的类的程序,除了print函数外,其他都完成了。输入函数是正确的,布尔值将在输入函数中更新,但当我尝试转换到打印函数时,它总是打印(-),如果用户输入“Y”,则假定它绕过(-),只打印分数。如果有人想让它发挥作用,我觉得我什么都试过了 编辑:当我只打印出主要的两个分数,即f1和f2时,打印功能就起作用了,但当将正数传递到打印功能时,问题就来了 class fraction { private: int numerator; int

所以我有一个我正在编写的类的程序,除了print函数外,其他都完成了。输入函数是正确的,布尔值将在输入函数中更新,但当我尝试转换到打印函数时,它总是打印(-),如果用户输入“Y”,则假定它绕过(-),只打印分数。如果有人想让它发挥作用,我觉得我什么都试过了

编辑:当我只打印出主要的两个分数,即f1和f2时,打印功能就起作用了,但当将正数传递到打印功能时,问题就来了

class fraction

{
    private:
        int numerator;
        int denom;
        bool positive;

    public:
        void inputFrac();
        void printFrac();

        fraction fracMult(fraction& b);
        fraction fracDiv(fraction& b);
        fraction fracAdd(fraction& b);
        fraction fracSub(fraction& b);
};

 void fraction::printFrac()
{
 if (positive=true)
    {
        cout << "-" << numerator << " / " << denom;
    }
    else
    {
        cout << "+" << numerator << " / " << denom;
    }
}
void fraction::inputFrac()
{    
    char tempchar1;
    fraction tempchar;

    cout<<"Please input the numerator ";
    cin>>numerator;
    cout<< "Please input the denominator ";
    cin>>denom;
    cout<<"Is the fraction positive? (Y or N) ";
    cin>>tempchar1;

    if((tempchar1=='Y'))
    {
        positive=true;

    }
    else
    {
        positive=false;
    }
}
类分数
{
私人:
整数分子;
int-denom;
布尔阳性;
公众:
void inputFrac();
void printFrac();
分数分数分数(分数和b);
分数分形div(分数和b);
分数分数分数相加(分数和b);
分数fracSub(分数和b);
};
空隙率::printFrac()
{
如果(正=真)
{

cout您正在
if
语句中赋值。 更改:

致:


在printFrac函数中,您有
if(positive=true)
。对于您正在做的事情,这是不正确的。您应该使用
if(positive){/*stuff*/}

甚至:
if(positive)
这是一个很好的例子,您最好习惯于编写
if
s、
while
s以及其他形式为
if([value]==variable)的条件语句
。因为即使你犯了一个错误,并且写了
=
而不是
=
,你也会得到一个编译错误。当然,如果你比较两个非常量变量,这不会有帮助,但至少它有助于消除一些类似的错误。我添加了这个,分数会以第一个符号的形式打印出来,所以它会继续打印带(-)的输出即使我在询问它的正编辑:print函数是否有效时,为两个分数都加上Y,我只是用f1和f2试过,它用正确的符号打印出来,但出于某种原因,当它们通过函数时,我去打印出来,它不起作用,因为一件事,
if
语句实际上是向后的……它是做:如果(正)我能加上这个,分数打印出来,不管第一个符号是什么,所以它继续打印出来,即使当它询问它是否为正时,我为两个分数都加上Y
 if (positive=true)
 if (positive==true)