Как исправить ошибку в статическом члене, который является закрытым? - PullRequest
0 голосов
/ 13 февраля 2019

Почему меня называют закрытым? Поскольку я являюсь статическим членом, то в строке № 19 не должно быть ошибок

#include<iostream>
using namespace std;
class myClass{
    static int i;
public:
    void seti(int a)
    {
        i=a;
    }
    int geti()
    {
        return i;
    }
};
int myClass::i;
int main()
{
    myClass ob1,ob2;
    cout<<myClass::i<<endl;
    ob1.seti(200);
    cout<<ob1.geti()<<endl;
    cout<<ob2.geti()<<endl;
}

1 Ответ

0 голосов
/ 13 февраля 2019

Здесь проблема в том, что атрибуты элемента class по умолчанию private.Это означает, что i является приватным, и вы не можете получить к нему доступ из-за пределов своего класса.

Одним из решений было бы объявить i в качестве открытого члена.

class myClass{
public:
    static int i;
    void seti(int a)
    {
        i=a;
    }
    int geti()
    {
        return i;
    }
};

PS: члены struct являются публичными по умолчанию

...