Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 06.07.2010, 14:37   #1
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
взаимодействие класса и структуры

Есть класс, содержащий экземпляр структуры. Нужно, чтобы без наследования дать возможность методам структуры управлять членами класса:
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# есть решение?
(Offline)
 
Ответить с цитированием
Старый 06.07.2010, 14:46   #2
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: взаимодействие класса и структуры

В С++ есть модификатор friend
Это очень крайний случай когда оно используется.
Инкапсуляция и акцессоры спасут тебе.
(Offline)
 
Ответить с цитированием
Старый 06.07.2010, 15:02   #3
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: взаимодействие класса и структуры

А можно чуточку поподробнее...??
(Offline)
 
Ответить с цитированием
Старый 06.07.2010, 15:04   #4
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: взаимодействие класса и структуры

В гугле зобанели?
class Foo
{
private:
    int bar;
public:
    int getBar()
    {
        return bar;
    }
    void setBar(int value)
    {
        bar = value;
    }
};
Алсо, не уверен как в C#, но, например, Obj-C имеет средства языка для создания акцессоров, в шарпе что-то такое тоже вроде есть.
(Offline)
 
Ответить с цитированием
Старый 06.07.2010, 15:17   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: взаимодействие класса и структуры

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

UPD: Более извращенный способ - рефлексия.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com