Я написал этот класс (ниже), но мой компилятор показывает ошибки. Кто-то знает, что здесь не так? Спасибо за вашу помощь и извините за мой английский, я только начал учиться.Как улучшить этот класс на C++?
Я написал этот класс для преобразования класса: с буквами на процентах и наоборот. Но что-то не так, не могли бы вы решить мою проблему?
О ОШИБКИ:
10:89: error: 'constexpr' needed for in-class initialization of static data member 'char Grade::grade_map [15]' of non-integral type [-fpermissive]
11:55: error: ISO C++ forbids in-class initialization of non-const static member 'Grade::letter'
11:55: error: scalar object 'Grade::letter' requires one element in initializer
14:12: error: expected ':' before 'Grade' In constructor 'Grade::Grade()':
17:30: error: array must be initialized with a brace-enclosed initializer
16:19: warning: unused variable 'grade_map' [-Wunused-variable]
17:19: warning: unused variable 'letter' [-Wunused-variable]
18:11: warning: unused variable 'percent' [-Wunused-variable] In function 'int main()':
48:125: error: no matching function for call to 'Grade::printGrade(Grade&)'
48:125: note: candidate is:
33:6: note: void Grade::printGrade(Grade*)
33:6: note: no known conversion for argument 1 from 'Grade' to 'Grade*'
45:8: warning: unused variable 'geade_map' [-Wunused-variable]
46:8: warning: unused variable 'letter' [-Wunused-variable]
Это мой класс в C++:
#include <iostream>
#include <cstdio>
using namespace std;
class Grade // my class
{
public:
static char grade_map [15];
static char letter;
int percent;
public Grade()
{
static char grade_map [15];
static char letter[20]='A';
int percent = 1;
}
void setGradeByPercent(Grade * grade, int percent)
{
grade->percent = percent;
grade->letter = grade_map [percent/10];
}
void setGradeByLetter(Grade * grade, char letter)
{
grade->letter = letter;
grade->percent = 100 - (letter - 'A') * 10 - 5;
}
void printGrade(Grade * grade)
{
printf("Grade: %d: %c\n", grade->percent, grade->letter);
}
};
**int main()**
{
Grade g;
int percent;
char grade_map[15];
char letter[20];
cout << "Enter two grades separated by a space. Use percentage for first and letter for the second: " << g.printGrade (g) << endl;
scanf("%d", &percent);
scanf("\n");
g.setGradeByPercent(&g, percent);
g.printGrade(&g);
g.setGradeByLetter(&g, getchar());
g.printGrade(&g);
return 0;
}
Если бы вы могли написать немного более описательное название, это было бы потрясающе. Кроме того, ** очевидно, что точные ошибки компилятора важны **. Скопируйте и вставьте их в свой вопрос. Вы можете отредактировать свой вопрос, нажав кнопку «Изменить» под ним. –
Какие ошибки? Пожалуйста, опубликуйте [mcve] и отформатируйте его правильно. –
Hm, @BaummitAugen, я не могу доверять вашему прозвищу: из вашего существования следует, что глаза не могут быть круговыми. –