Я начинаю программировать, запускаю C++ один слабый. У меня есть проблема с использованием моей статической переменной. я читал об использовании статической переменной в одном и том же вопросе, но я понимаю только это Car :: countOfInput;. снизу поста:Ошибка использования статической и статической функции в C++
это мой код:
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
class Car{
private:
static int countOfInput;
char *carName;
double carNumber;
public:
Car() {
static int countOfInput = 0;
char carName = {'X'};
double carNumber = 0;
}
void setVal(){
double number;
cout << "Car Name: ";
char* str = new char[strlen(str) + 1];
cin>>str;
strcpy(carName, str);
cout << endl << "Car Number: ";
cin >> number; cout << endl;
carNumber = number;
Car::countOfInput += 1;
}
friend void print(){
if(Car::countOfInput == 0){
cout << "Error: empty!";
return;
}
cout << "LIST OF CarS" << endl;
cout << "Car Name: " << carName << "\t";
cout << "Car Number: " << carNumber << endl;
} const
void setCarNumber(int x){carNumber = x;}
int getCarNumber(){return carNumber;}
void setcarName(char x[]){strcpy(carName, x);}
char getcarName(){return *carName;}
int getCountOfInput(){return countOfInput;}
void setCountOfInput(int x){countOfInput = x;}
};
int main(){
Car product[3];
product[0].setVal();
product[0].print();
getch();
return 0;
}
, когда я запускаю это:
F:\CLion\practise\main.cpp: In function 'void print()':
F:\CLion\practise\main.cpp:10:13: error: invalid use of non-static data member 'Car::carName' char *carName; ^
F:\CLion\practise\main.cpp:40:33: error: from this location cout << "Car Name: " << carName << "\t"; ^
F:\CLion\practise\main.cpp:11:12: error: invalid use of non-static data member 'Car::carNumber' double carNumber; ^
F:\CLion\practise\main.cpp:41:35: error: from this location cout << "Car Number: " << carNumber << endl; ^
F:\CLion\practise\main.cpp: In function 'int main()':
F:\CLion\practise\main.cpp:57:16: error: 'class Car' has no member named 'print' product[0].print();
Я использую CLion, спасибо заранее.
Если переменная класса помечена 'static', она не связана с экземпляром _any_ своего класса. Вы уверены, что это то, что вы хотите? – erip
Грубо говоря, я хочу увеличить ** count ** моей статической переменной каждый раз, когда 'setVal()' вызов функции. –
Думаю, вам нужно сделать гораздо меньшие шаги. Здесь вы собрали массу по меньшей мере четырех отдельных ошибок: упростить это было бы сокращение количества кода и тестирования ранее. –