вопрос о приоритете операторов C ++ «адрес» и «разрешение области»

Здравствуйте, у меня есть этот код с ошибкой компилятора (ошибка из Microsoft Visual Studio 2008):

class B
{
protected:
int b;
};

class A : public B
{
public:
void foo(){ &B::b; }//  error C2248: 'B::b' : cannot access protected member declared in class 'B'
};

в то время как этот код не содержит ошибок:

class B
{
protected:
int b;
};

class A : public B
{
public:
void foo(){ &(B::b); }
};

Эти два фрагмента кажутся мне эквивалентными на основе моих знаний о приоритете операторов, потому что :: имеет более высокий приоритет, чем & (см., Например, таблицу 2 на стр. 137 книги "JOINT STRIKE FIGHTER AIR VEHICLE C ++ СТАНДАРТЫ КОДИРОВАНИЯ ДЛЯ РАЗРАБОТКИ СИСТЕМЫ И ПРОГРАММА ДЕМОНСТРАЦИИ " http://www2.research.att.com/~bs/JSF-AV-rules.pdf )

Но они разные ... Я думаю, это что-то связано с" указатель-на-данные-член ", но я не знаю, как это соотносится с приоритетом операторов.

Любое объяснение?

Спасибо, Очевидно, что сетки свойств будут иметь разные свойства и должны измениться при изменении типа выбранного элемента.

Возникает вопрос: как реализовать переключение сеток свойств в WPF в соответствии с шаблоном MVVM? С помощью какого механизма?

В настоящее время у меня есть свойство абстрактного перечисления в базовой модели представления (AnimalViewModel.PropertyGridType = {Lion, Snake, Bird}), которое производные классы реализуют, возвращая соответствующие значения. И AnimalCollectionView изменяет пользовательские элементы управления сетки свойств в зависимости от значения этого свойства. Примерно так:

...


    



...

Но я не уверен, правильный ли это подход. (По крайней мере, мне не нравится вводить вспомогательное свойство enum. Можно ли вывести необходимый пользовательский элемент управления на основе типа ViewModel?) Как реализовать переключение сеток свойств в WPF по шаблону MVVM? С помощью какого механизма?

В настоящее время у меня есть свойство абстрактного перечисления в базовой модели представления (AnimalViewModel.PropertyGridType = {Lion, Snake, Bird}), которое производные классы реализуют, возвращая соответствующие значения. И AnimalCollectionView изменяет пользовательские элементы управления сетки свойств в зависимости от значения этого свойства. Примерно так:

...


    



...

Но я не уверен, правильный ли это подход. (По крайней мере, мне не нравится вводить вспомогательное свойство enum. Можно ли вывести необходимый пользовательский элемент управления на основе типа ViewModel?) Как реализовать переключение сеток свойств в WPF по шаблону MVVM? С помощью какого механизма?

В настоящее время у меня есть свойство абстрактного перечисления в базовой модели представления (AnimalViewModel.PropertyGridType = {Lion, Snake, Bird}), которое производные классы реализуют, возвращая соответствующие значения. И AnimalCollectionView изменяет пользовательские элементы управления сетки свойств в зависимости от значения этого свойства. Примерно так:

...


    



...

Но я не уверен, правильный ли это подход. (По крайней мере, мне не нравится вводить вспомогательное свойство enum. Можно ли вывести необходимый пользовательский элемент управления на основе типа ViewModel?) PropertyGridType = {Lion, Snake, Bird}), которые производные классы реализуют, возвращая соответствующие значения. И AnimalCollectionView изменяет пользовательские элементы управления сетки свойств в зависимости от значения этого свойства. Примерно так:

...


    



...

Но я не уверен, правильный ли это подход. (По крайней мере, мне не нравится вводить вспомогательное свойство enum. Можно ли вывести необходимый пользовательский элемент управления на основе типа ViewModel?) PropertyGridType = {Lion, Snake, Bird}), которые производные классы реализуют, возвращая соответствующие значения. И AnimalCollectionView изменяет пользовательские элементы управления сетки свойств в зависимости от значения этого свойства. Примерно так:

...


    



...

Но я не уверен, правильный ли это подход. (По крайней мере, мне не нравится вводить вспомогательное свойство enum. Можно ли вывести необходимый пользовательский элемент управления на основе типа ViewModel?) Кто-нибудь может посоветовать другие варианты? Заранее благодарим!

20
задан Niccolo 16 February 2011 в 16:13
поделиться