Gli inizializzatori di membri dati non statici sono disponibili solo con -std = c ++ 11 o -std = gnu ++ 11

Aug 22 2020

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

Di seguito ho usato //per mostrare tre righe di codice in cui ho ricevuto l'errore, nonostante il codice funzioni bene.

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

Inoltre, non ho incluso l'intero codice perché è un po 'più lungo. Per favore dimmi se devo caricare l'intero codice. Ho solo bisogno di aiuto per far funzionare il codice senza alcun tipo di errore.

Risposte

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

float count = 0;//[Warning] 

bool status = true;//[Warning]

Quelli sono avvertimenti, non errori. Significa che stai inizializzando quelle variabili membro in classe ma non sono membri statici. Questa era una limitazione dei vecchi C ++ 98 e C ++ 03.

Puoi eliminare questi avvisi in due modi:

(1) Fai esattamente quello che il compilatore vuole che tu faccia, cioè specificando queste opzioni quando compili il tuo codice:

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

(2) Inizializza quelle definizioni in classe, invece di inizializzarle usando il vecchio modo, ad es. utilizzando il costruttore:

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