Вопрос по intellisense, c++, private-members, visual-studio – Как скрыть частных участников класса?

8

Я использую Visual Studio в течение некоторого времени, и это раздражает меня каждый раз, когда я работаю с классами. Проблема в том, что когда я создаю объект класса, я склонен видеть, что приватные члены принадлежат этому классу, и я не хочу этого, потому что, если я создаю класс с 10+ приватной переменной, тогда это будет кошмар , должен быть способ скрыть частных пользователей, если есть способ, не могли бы вы поделиться им со мной? Спасибо :)

РЕДАКТИРОВАТЬ:

Вот картинка, которая поможет вам понять, о чем я говорю,

например, здесь у меня есть 2 приватные переменные класса LinkedList (curSize и head). Я не смогу изменить их из main, поэтому нет смысла их видеть (не так ли?). Как я могу скрыть их, не изменяя мой код? есть ли для этого настройка в Visual Studio?

Это особенность. В нем перечислены все переменные / методы, к которым у вас есть доступ в текущем контексте, в котором вы находитесь. Если вы просматриваете код в методе экземпляра, вам показываются переменные в текущей области. Это включает в себя параметры метода, локальные переменные, переменные экземпляра, свойства, методы и так далее. Если вы не хотите это видеть, отключите intellisense. Это не вариант, который вы можете настроить. Jeff Mercado
Трудно понять, как это может быть реальной проблемой, если вы говорите об исходном коде. Просто поместите закрытые части в конце урока. Если вы на самом деле говорите об отладчике, то это его задача - показать состояние объекта. Hans Passant
На каком языке? если вы говорите о C #, я знаю, что вы также можете использовать частичные классы, чтобы разбить членов класса на несколько файлов. 000
Это семестра, что intellisense показывает членов, которые не доступны в текущем контексте, и он хочет избежать этого. David Rodríguez - dribeas
Если вы говорите о выпадающем списке автозаполнения, он следует правилам доступности, поэтому закрытые члены объекта типа A доступны для любого другого объекта типа A. 000

Ваш Ответ

3   ответа
4

Вы можете использовать регионы, как это:

class MyClass {

    #region Private Variables

    private int x;
    private int y;
    private int z;

    #endregion

}

Visual Studio будет отображать немного- сразу после#region линия. Нажмите, чтобы скрыть переменные.

@Malkavian Я серьезно сомневаюсь, что он есть, потому что это нелегко сделать: ваши личные переменные могут быть разбросаны по вашему коду, поэтому автоматическое определение сворачиваемых областей будет довольно проблематичным. dasblinkenlight
Вы должны использовать#pragma region в C ++, и это не остановит IntelliSense от показа закрытых членов (но я понимаю, что вы ответили до того, как вопрос был отредактирован). Cody Gray♦
@CodyGray Спасибо за ваш ответ :) Я думал, что мог бы быть способ сделать это, но благодаря dasblinkenlight я понял, что проблема не так тривиальна, как я думал. С положительной стороны это заставит меня использовать наименьшее количество частных глобальных переменных и поможет мне использовать OOD умнее :) Malkavian
Спасибо за ваш ответ! :) но есть ли способ сделать это без изменения моего исходного кода? (например, настройка Visual Studio для отображения / скрытия закрытых членов класса) Malkavian
5

но и не красивым ответом, но оно выполнит свою работу, и если вы сможете жить с небольшим изменением синтаксиса, это определенно сработает. Одна из уловок, которую я узнал из наблюдений за классами std, такими как std :: vector, заключается в том, что они обозначают закрытые члены префиксом _, тем самым заставляя все закрытые члены достигать самой нижней части intellisense. Он не удаляет их из списка, но переместит их все в самый низ, чтобы они не мешали вам при прокрутке списка. Вот пример:

class SomeClass{
public:
   int myPublicMemeber;
private:
   int _myPrivateMember;
};
вау хороший трюк, обязательно рассмотрим его, когда мне нужно спрятать приватных участников Спасибо за ваш ответ! Malkavian
4

это невозможно в текущей версии Visual Studio. В C ++ список IntelliSense не фильтруется доступностью или областью действия. Таким образом, частные члены все еще отображаются, даже если они на самом деле не доступны для вашего кода. Также нет настроек для настройки этого поведения.

Вам просто нужно положиться на значок замка, чтобы указать, что они закрыты и поэтому недоступны. Все эти маленькие значки в окне IntelliSenseделать иметь смысл, ты знаешь.

Но, похоже, эта функциямог бы быть в следующей версии Visual Studio (VS11).MSDN говорит:

Улучшения списка участников, Раскрывающийся список Список участников появляется автоматически при вводе кода в редакторе кода. Результаты фильтруются, поэтому при вводе отображаются только релевантные элементы. Вы можете управлять типом логики фильтрации, используемой списком элементов, в диалоговом окне «Параметры» в текстовом редакторе, C / C ++, «Дополнительно».

Как бы глупо это ни было, я тоже очень рад этому. Наряду с другими интересными вещами, такими как лучшая подсветка синтаксиса и подсветка ссылок.Предварительный просмотр для разработчиков отсутствует, так что вы можете попробовать использовать его, если хотите, но он может быть не готов к прайм-тайм. И это по общему признанию паршивая причина для обновления ...

В качестве альтернативы, вы можете инвестировать вVisual Assist XЭто расширение, доступное для нескольких версий Visual Studio, которое добавляет множество удобных функций в C ++ IDE и, соответственно, улучшает фильтрацию IntelliSense. Это не бесплатно, но довольно круто для разработчиков на C ++, и если бы я не был бедным / сломленным / дешевым, я бы определенно купил его сам.

Нет, до сих пор не появился в VS 2012 RC. Я думаю, нам придется подождать Visual Studio 2014, прежде чем мы получим такую простую функцию. Если бы только команда не была так занята, уродливым пользовательским интерфейсом и удалением всего цвета ... Cody Gray♦

Похожие вопросы