J'ai chassé pendant des heures en essayant de comprendre ce que je fais mal, et je ai exterminé la plupart de mes problèmes, mais quand je tente de compiler mon code en main()
il arrive avec ce même message d'erreur:demande pour le membre "..." dans "..." qui est de type non-classe "..."
request for member "..." in "..." which is of non-class type "..."
et il se répète pour toutes les fonctions que j'essaie d'appeler main()
. Quel est le problème? Je ne peux pas comprendre où est mon erreur. J'utilise Terminal sur un macbook pour compiler le code.
Voici ma fonction principale:
//Program1.cpp
//Program1Math test function
#include "Program1Math.h"
int main()
{
//Create a Program1Math object
Program1Math myProgram1Math();
myProgram1Math.setNumber1();
myProgram1Math.setNumber2();
myProgram1Math.displayMultiple();
myProgram1Math.displaySine1();
myProgram1Math.displayTangent1();
myProgram1Math.displaySine2();
myProgram1Math.displayTangent2();
}
Voici les définitions de fonction de membre de la classe:
//Program1Math.cpp
//Program1Math member-function definitions.
#include <iostream>
#include <cmath>
#include "Program1Math.h"
using namespace std;
//constructor makes a Program1Math, adds an blank line
Program1Math::Program1Math()
{
cout << "/n";
}
//function to assign the first integer to its appropriate location
void Program1Math::setNumber1()
{
cout << "Please enter the first integer number /n";
int numberSpot;
cin >>numberSpot;
static_cast<double>(numberSpot);
number1 = numberSpot;
}
//function to assign the second integer to its appropriate location
void Program1Math::setNumber2()
{
cout << "Please enter the second integer number /n";
int numberSpot;
cin >>numberSpot;
static_cast<double>(numberSpot);
number2 = numberSpot;
}
//function to find the sine value for a specified number
void Program1Math::calculateSine(double inputNumber)
{
sineValue = sin(inputNumber);
}
//function to find the tangent value for a specified number
void Program1Math::calculateTangent(double inputNumber)
{
tangentValue = tan(inputNumber);
}
//function to determine if the user-inputted numbers are multiples of each other
void Program1Math::calculateModulus()
{
int number1Int = static_cast<int>(number1);
int number2Int = static_cast<int>(number2);
int modulusValue = number1Int % number2Int;
if (modulusValue == 0)
multiple = true;
else
multiple = false;
}
//function to display the whether the numbers are multiples or not
void Program1Math::displayMultiple()
{
if(multiple == true)
cout<< number1 << " is a multiple of " << number2 << "!/n";
else
cout<< number1 << "is not a multiple of " << number2 << "./n";
}
//function to display the sine value of the first number
void Program1Math::displaySine1()
{
calculateSine(number1);
cout << "Sine(" << number1 << ") = " << sineValue << "/n";
}
//function to display the sine value of the second number
void Program1Math::displaySine2()
{
calculateSine(number2);
cout << "Sine(" << number2 << ") = " << sineValue << "/n";
}
//function to display the tangent value of the first number
void Program1Math::displayTangent1()
{
calculateTangent(number1);
cout << "Tan(" << number1 << ") = " << tangentValue << "/n";
}
//function to display the tangent value of the second number
void Program1Math::displayTangent2()
{
calculateTangent(number2);
cout << "Tan(" << number2 << ") = " << tangentValue << "/n";
}
est le fichier d'en-tête ici:
#include <cmath>
using namespace std;
class Program1Math
{
public:
Program1Math();
void setNumber1();
void setNumber2();
void calculateSine(double);
void calculateTangent(double);
void calculateModulus();
void displayMultiple();
void displaySine1();
void displaySine2();
void displayTangent1();
void displayTangent2();
private:
double number1;
double number2;
double sineValue;
double tangentValue;
bool multiple;
};
Je crois que la réponse nécessite la déclaration de classe ainsi que la définition. –
Je ne pense pas que ceci puisse être diagnostiqué sans le fichier d'entête avec la définition de classe. –
Pourquoi apportez-vous vos numéros en tant qu'ints et en les convertissant en doubles? Pourquoi ne pas les lire directement en double? –