Почему мы не можем инициализировать переменную-член класса в C ++ - PullRequest
0 голосов
/ 01 сентября 2018

выдает ошибку:

#include <iostream>
using std::cout;

class stud
{
    int a = 0; // error??

public:
    void display();
};

int main()
{
    // ...
}

Ответы [ 3 ]

0 голосов
/ 01 сентября 2018

(причина)

Нестатический элемент данных с инициализатором элемента по умолчанию поддерживается начиная с C ++ 11.

-

(Исправление)

В наши дни многие компиляторы поддерживают C ++ 11.

Для пользователей Visual Studio IDE (как и я): В свойствах проекта: C / C ++> Язык> C ++ Стандарт языка: Установите C ++ 11 или выше. В Visual Studio 2017 C ++ 11 поддерживается на базовом уровне.

Для пользователей, отличных от Visual Studio IDE, поищите в компиляторе тему «Как включить C ++ 11».

0 голосов
/ 01 сентября 2018

Это можно сделать с C ++ 11 и далее .

Через инициализатор элемента по умолчанию, который является просто инициализатором скобок или равен, включенным в декларацию члена, который используется, если элемент отсутствует в списке инициализатора члена.

class S
{
    int n = 7;
    std::string s{'a', 'b', 'c'};
    S() // copy-initializes n, list-initializes s
    { }
};
0 голосов
/ 01 сентября 2018

В классе мы обычно объявляем все переменные в приватном разделе. И мы не инициализируем их в классе. Вы можете использовать конструктор для их инициализации.

class stud {

private:

    int a;

public:

    stud();
};

stud::stud() 
{

int a = 5; // initialize here..

}
...