9

我需要制作一个程序,从用户那里获取一小部分然后简化它。

我知道该怎么做并且已经完成了大部分代码,但我不断收到这个错误“错误:在'之前预期的不合格ID。' 令牌”。

我已经声明了一个名为 ReducedForm 的结构,它包含简化的分子和分母,现在我要做的是将简化的值发送到这个结构。这是我的代码;

在 Rational.h 中;

#ifndef RATIONAL_H
#define RATIONAL_H

using namespace std;

struct ReducedForm
{
    int iSimplifiedNumerator;
    int iSimplifiedDenominator;
};

//I have a class here for the other stuff in the program
#endif

在 Rational.cpp 中;

#include <iostream> 
#include "rational.h" 
using namespace std;

void Rational :: SetToReducedForm(int iNumerator, int iDenominator)
{
int iGreatCommDivisor = 0;

iGreatCommDivisor = GCD(iNumerator, iDenominator);

//The next 2 lines is where i get the error
ReducedForm.iSimplifiedNumerator = iNumerator/iGreatCommDivisor;
ReducedForm.iSimplifiedDenominator = iDenominator/iGreatCommDivisor;
};
4

3 回答 3

6

您正在尝试使用 a.而不是静态访问结构::,其成员也不是static。要么实例化ReducedForm

ReducedForm rf;
rf.iSimplifiedNumerator = 5;

或将成员更改为static这样:

struct ReducedForm
{
    static int iSimplifiedNumerator;
    static int iSimplifiedDenominator;
};

在后一种情况下,您必须访问成员::而不是.我非常怀疑后者是您想要的;)

于 2013-08-05T16:03:53.337 回答
4

结构的名称是ReducedForm; 您需要制作一个对象structor的实例class)并使用它。做这个:

ReducedForm MyReducedForm;
MyReducedForm.iSimplifiedNumerator = iNumerator/iGreatCommDivisor;
MyReducedForm.iSimplifiedDenominator = iDenominator/iGreatCommDivisor;
于 2013-08-05T16:05:42.890 回答
3

ReducedForm是一种类型,所以你不能说

ReducedForm.iSimplifiedNumerator = iNumerator/iGreatCommDivisor;

您只能.在实例上使用运算符:

ReducedForm rf;
rf.iSimplifiedNumerator = iNumerator/iGreatCommDivisor;
于 2013-08-05T16:03:43.073 回答