forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   взаимодействие класса и структуры (http://forum.boolean.name/showthread.php?t=12835)

Reizel 06.07.2010 14:37

взаимодействие класса и структуры
 
Есть класс, содержащий экземпляр структуры. Нужно, чтобы без наследования дать возможность методам структуры управлять членами класса:
Class Home:GameObj
{
protected int Entity;
protected bool Engine;
protected intellect intel;
public Home()
{
intel=new intellect(this);
}
}

struct intellect
{
Home user;
public intellect(Home user)
{
this.user=user;
}

public void Update()
{
user.Engine=true; //Error, access denied
}
}

Пишет, что не может обратиться к переменной Engine, в силу уровня ее защиты. В С++ есть модификатор friend, вот так:
struct intellect : friend Home //как то так


А в C# есть решение?

Knightmare 06.07.2010 14:46

Ответ: взаимодействие класса и структуры
 
Цитата:

В С++ есть модификатор friend
Это очень крайний случай когда оно используется.
Инкапсуляция и акцессоры спасут тебе.

Reizel 06.07.2010 15:02

Ответ: взаимодействие класса и структуры
 
А можно чуточку поподробнее...??

Knightmare 06.07.2010 15:04

Ответ: взаимодействие класса и структуры
 
В гугле зобанели?
Код:

class Foo
{
private:
    int bar;
public:
    int getBar()
    {
        return bar;
    }
    void setBar(int value)
    {
        bar = value;
    }
};

Алсо, не уверен как в C#, но, например, Obj-C имеет средства языка для создания акцессоров, в шарпе что-то такое тоже вроде есть.

pax 06.07.2010 15:17

Ответ: взаимодействие класса и структуры
 
Есть ключевое слово internal, которое можно применить вместо protected. Это даст доступ к этим членам класса только внутри сборки.

UPD: Более извращенный способ - рефлексия.


Часовой пояс GMT +4, время: 04:26.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot