fout: verwachte niet-gekwalificeerde id vóór ‘.’ token //(struct)

Ik moet een programma maken dat een fractie van de gebruiker krijgt en het vervolgens vereenvoudigt.

Ik weet hoe ik het moet doen en heb de meeste code gedaan, maar ik krijg steeds deze foutmelding “error: Expected unqualified-id before ‘.’ token”.

Ik heb een struct met de naam ReducedForm gedeclareerd die de vereenvoudigde teller en noemer bevat, wat ik nu probeer te doen is de vereenvoudigde waarden naar deze struct te sturen.
Hier is mijn code;

In 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

In 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;
};

Antwoord 1, autoriteit 100%

Je probeert statisch toegang te krijgen tot de struct met een .in plaats van ::, en de leden ervan zijn ook niet static. Ofwel instantiëren ReducedForm:

ReducedForm rf;
rf.iSimplifiedNumerator = 5;

of verander de leden als volgt in static:

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

In het laatste geval moet je de leden benaderen met ::in plaats van .Ik betwijfel echter ten zeerste of je voor het laatste gaat 😉


Antwoord 2, autoriteit 80%

De naam van de struct is ReducedForm; je moet een objectmaken (instance van de structof class) en dat gebruiken. Doe dit:

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

Antwoord 3, autoriteit 60%

ReducedFormis een type, dus je kunt niet zeggen

ReducedForm.iSimplifiedNumerator = iNumerator/iGreatCommDivisor;

U kunt de operator .alleen gebruiken voor een instantie:

ReducedForm rf;
rf.iSimplifiedNumerator = iNumerator/iGreatCommDivisor;

Other episodes