Здравствуйте, у меня есть этот код с ошибкой компилятора (ошибка из 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?) Кто-нибудь может посоветовать другие варианты? Заранее благодарим!