错误:“。”标记之前的预期 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
;您需要创建一个 object(struct
或 class
的实例)并使用它。这样做:
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)