Переменные класса: общедоступный доступ только для чтения, но частный доступ для чтения / записи

Ой, в данный момент не работаю с этой библиотекой сокетов. Я пытаюсь немного изучить C ++.

Есть ли способ сделать переменную общедоступной только для чтения, но для чтения и записи при частном доступе? например, примерно так:

class myClass {
    private:
    int x; // this could be any type, hypothetically

    public:
    void f() {
        x = 10; // this is OK
    }
}

int main() {
    myClass temp;

    // I want this, but with private: it's not allowed
    cout << temp.x << endl;


    // this is what I want:

    // this to be allowed
    temp.f(); // this sets x...

    // this to be allowed
    int myint = temp.x;

    // this NOT to be allowed
    temp.x = myint;
}

Мой вопрос, сокращенный, как разрешить полный доступ к x изнутри f () , но доступ только для чтения из любого другого места, то есть int newint = temp.x; разрешен, но temp.x = 5; не допускается? как константная переменная, но с возможностью записи из f () ...

РЕДАКТИРОВАТЬ: Я забыл упомянуть, что я планирую возвращать большой экземпляр вектора, использование функции getX () приведет только к копия этого, и это не совсем оптимально. Я мог бы вернуть указатель на него, но это плохая практика iirc.

PS: Где я буду писать, если я просто хочу в основном показать свои знания об указателях и спросить, полные они или нет? Спасибо!

50
задан FurryHead 24 March 2011 в 09:05
поделиться