Nicht statische Datenelementinitialisierer sind nur mit -std = c ++ 11 oder -std = gnu ++ 11 verfügbar

Aug 22 2020

[Warning] non-static data member initializers only available with -std=c++11 or -std=gnu++11

Unten habe ich //gezeigt, dass drei Codezeilen, in denen ich den Fehler erhalten habe, obwohl der Code einwandfrei funktioniert.

#include <iostream>
#include <conio.h>

using namespace std;

class Bank
{
  private:
    char name[20];
    int accNo;
    char x;
    double balance;
    double amount;
    float interestRate;
    float servCharge = 5;  //[Warning]
    float count = 0;  //[Warning] 
    bool status = true;  //[Warning]

  public:
    void openAccount();
    void depositMoney();
    void withdrawMoney();
    void checkBalance_info();
    void calcInt();
    void monthlyProc();
};

void Bank::calcInt() {
cout << " Enter your annual interestRate : " << endl;
cin >> interestRate;

double monthlyInterestRate = interestRate / 12;
double monthlyInterest = balance * monthlyInterestRate;
balance += monthlyInterest;

cout << "Updated Balance After Monthly interestRate " << balance << endl;

if (balance < 25){
   status = true;
}

void Bank :: monthlyProc(){  
  if (balance < 25){
    status = false;
  }   
  while (count > 4){
    balance = balance - 1;
  }
  servCharge = servCharge + (count * 0.10);
  balance -= servCharge;
  cout << "Monthly Service Charges: " << servCharge <<endl;
  cout << "Updated Balance After Monthly interestRate " << balance << endl;
}

Außerdem habe ich nicht den gesamten Code eingefügt, da er etwas länger ist. Bitte sagen Sie mir, ob ich den gesamten Code hochladen muss. Benötigen Sie nur Hilfe, damit der Code fehlerfrei ausgeführt wird.

Antworten

3 artm Aug 23 2020 at 04:00
float servCharge = 5; //[Warning]

float count = 0;//[Warning] 

bool status = true;//[Warning]

Das sind Warnungen, keine Fehler. Dies bedeutet, dass Sie diese Elementvariablen in der Klasse initialisieren, diese jedoch keine statischen Elemente sind. Dies war eine Einschränkung älterer C ++ 98 und C ++ 03.

Sie können diese Warnungen auf zwei Arten entfernen:

(1) Tun Sie genau das, was der Compiler von Ihnen verlangt, dh geben Sie diese Option beim Kompilieren Ihres Codes an:

-std=c++11 or -std=gnu++11  // using newer C++11

(2) Initialisieren Sie diese Definitionen in der Klasse, indem Sie sie stattdessen auf die alte Weise initialisieren, d. H. mit dem Konstruktor:

Bank::Bank() : servCharge(5), count(0), status(true)
{
   //..
}