错误:“。”标记之前的预期 unqualified-id //(结构)

Posted

技术标签:

【中文标题】错误:“。”标记之前的预期 unqualified-id //(结构)【英文标题】:error: expected unqualified-id before ‘.’ token //(struct) 【发布时间】:2013-08-05 16:02:01 【问题描述】:

我需要制作一个程序,从用户那里获取分数,然后对其进行简化。

我知道该怎么做,并且已经完成了大部分代码,但我一直收到此错误“错误:在‘.’令牌之前预期的 unqualified-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;
;

【问题讨论】:

在头文件中使用命名空间'对你的文件的用户来说不是一件好事。 【参考方案1】:

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

ReducedForm rf;
rf.iSimplifiedNumerator = 5;

或将成员更改为static,如下所示:

struct ReducedForm

    static int iSimplifiedNumerator;
    static int iSimplifiedDenominator;
;

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

【讨论】:

【参考方案2】:

结构的名字是ReducedForm;您需要创建一个 objectstructclass 的实例)并使用它。这样做:

ReducedForm MyReducedForm;
MyReducedForm.iSimplifiedNumerator = iNumerator/iGreatCommDivisor;
MyReducedForm.iSimplifiedDenominator = iDenominator/iGreatCommDivisor;

【讨论】:

【参考方案3】:

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

ReducedForm.iSimplifiedNumerator = iNumerator/iGreatCommDivisor;

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

ReducedForm rf;
rf.iSimplifiedNumerator = iNumerator/iGreatCommDivisor;

【讨论】:

哦,是的,我现在明白了。我不知道我是怎么错过的。愚蠢的错误。谢谢

以上是关于错误:“。”标记之前的预期 unqualified-id //(结构)的主要内容,如果未能解决你的问题,请参考以下文章

来自 Qt 文件的编译时错误:在 ')' 标记之前预期的 unqualified-id

错误:在 Linux (Centos) 中的“__extension__”之前预期的 unqualified-id

SpriteBatch 和 SpriteFont (DirectXTK) 抛出错误(预期的 unqualified-id)

我收到错误错误类型参数一元减号和预期';'在 ':' 标记之前

C++:错误:“”标记之前的预期类名

gcc 错误“预期 ')' 在 '[' 标记”之前