Почему функции, принадлежащие классу, не отображаются в Visual C++?

Я использую Visual C++ в Visual Studio 2010 Express, и в прошлом я помню, когда вы использовали строковый объект и после точки (например: .) все функции-члены будут отображаться в списке, но этого не происходит.

string myString = "hello world";
myString.

После ввода точки все функции, являющиеся частью класса string, не отображаются. Где в Visual C++ есть настройки, чтобы они отображались?


comment
Вы используете C++/CLI? Версия C++, предназначенная для работы с Microsoft .NET Framework?   -  person Cody Gray    schedule 16.02.2011
comment
Я так думаю... Я использую Visual C++ 2010 Express edition. Я создаю CLI проекта, а затем создаю файл .cpp   -  person miatech    schedule 16.02.2011


Ответы (1)


Функциональность, на которую вы ссылаетесь, называется IntelliSense на языке Microsoft, их версия автодополнения для имен переменных, функций и методов.

IntelliSense не поддерживается в Visual Studio 2010 для проектов C++/CLI. Вы получите IntelliSense только для проектов, написанных в собственном коде C++. Более подробно это объясняется здесь в блоге команды разработчиков Visual C++. В Microsoft Connect также зарегистрирована ошибка; официальное слово такое:

Спасибо за ваш отзыв. К сожалению, в этом выпуске нам пришлось сократить поддержку IntelliSense для C++/CLI из-за нехватки времени. Если вы хотите получить некоторую интеллектуальную информацию, такую ​​как краткая информация и список участников в собственных классах, вы можете получить их, выбрав отсутствие поддержки /clr в свойствах проекта.

Спасибо!
Команда Visual C++

Это неприятная новость для многих из нас, кто работает с проектами C++/CLI, и у нас не так много вариантов. Здесь задан вопрос об этих параметрах: Чем люди заменяют отсутствующий C++/CLI Intellisense в VS 2010? В итоге люди либо возвращаются к VS 2008
(я полагаю, что Express Edition 2008 года все еще доступен для загрузки если приглядеться), или купить стороннее программное обеспечение, такое как Visual Assist X, которое обещает вернуть IntelliSense. .

Однако стоит отметить, что Microsoft не считает C++/CLI «первоклассным» языком .NET. Мало причин (если есть какие-либо) начинать новые проекты с использованием этого языка. Он предназначен для взаимодействия между собственными приложениями C++ и управляемыми приложениями C#. Если вы хотите писать на C++, вам следует ориентироваться на собственный Windows API (создайте новый проект Win32 в VS). Если вы хотите написать управляемый код .NET, настоятельно рекомендуется вместо этого использовать C# (это другая версия Express, которую необходимо загружать отдельно). Синтаксис C++ и C# очень похож, но вам все равно придется изучить .NET Framework и идиомы. Как собственные проекты C++, так и управляемые проекты C# имеют очень много < em>улучшенная поддержка IntelliSense в Visual Studio 2010, так что вы гарантированно намного будете довольны любой из них.

person Cody Gray    schedule 17.02.2011
comment
Насколько я понимаю, C++/CLI отличается от предыдущего языка Managed C++; похоже, он понимает множество концепций, которые очень важны в программировании .net, но с которыми C# справляется очень плохо. Например, C++/CLI понимает разницу между полем, которое содержит ссылку на что-то, принадлежащее содержащему объекту, и полем, которое содержит ссылку на объект, принадлежащий чему-то другому. Жаль, что нет языка, сочетающего в себе функции vb.net, C# и C++/CLI, поскольку у каждого из них есть некоторые важные функции, которых нет у других. - person supercat; 23.10.2012