переопределить шаблон класса C ++ по умолчанию в Visual Studio 2010 - PullRequest
10 голосов
/ 18 февраля 2011

Когда я создаю новый класс C ++ в Visual Studio 2010, он генерирует класс с некоторым шаблоном кода.Как я могу изменить этот шаблон в соответствии со своими потребностями?

Ответы [ 4 ]

3 голосов
/ 26 октября 2011

Одна проблема с поиском информации об этом состоит в том, что большая часть информации о создании шаблонов относится к .NET, а процесс для Visual C ++ отличается. Также ответ, вероятно, не то, что вы хотите услышать, потому что это включает в себя редактирование кода JavaScript, а не просто редактирование какого-либо файла шаблона. Возможно, вы сможете создать новый мастер, который использует файл шаблона, но это один из способов изменить шаблон по умолчанию без этого. Изменение кода мастера включает в себя редактирование файла JavaScript:

C: \ Program Files \ Microsoft Visual Studio 10.0 \ VC \ VCWizards \ CodeWiz \ Generic \ Class \ Scripts \ 1033 \ default.js

Javascript использует CodeModel для манипулирования (или генерации, в данном случае) исходного кода. Внутри этого файла есть функция OnFinish, которую вы можете использовать для изменения выводимых сведений о классе. Вы увидите следующую строку в файле:

var newclass = oCM.AddClass(strClassName,
strHeader, vsCMAddPositionEnd, "", "", vsCMAccessDefault);

Чтобы добавить новую функцию, вы должны сделать что-то вроде:

newclass.AddFunction("MyFunction", vsCMFunctionFunction,
vsCMTypeRefVoid, vsCMAddPositionEnd, vsCMAccessPublic, strImpl);

Вы можете прочитать об этом здесь:

Внутри мастера Visual C ++

Справочная документация:

Создание мастера

1 голос
/ 18 февраля 2011

Шаблоны по умолчанию в C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcprojectitems. Измените соответственно для версии x86-vs-x64 и VS.

0 голосов
/ 18 декабря 2012

Проверено в MVS 2008 ...

Файл: C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ VCWizards \ CodeWiz \ Generic \ Class \ Scripts \ 1033 \ default.js

Добавлен код (после создания ctor & dtor по умолчанию в default.js)

    var oCopyCtor = newclass.AddFunction(strClassName+"(const "+strClassName+"& refObj)", vsCMFunctionConstructor, "", vsCMAddPositionEnd, vsCMAccessPrivate, strImpl);
    var oAssignmentOperator = newclass.AddFunction("operator=(const "+strClassName+"& rhs)", vsCMFunctionOperator, strClassName+"&", vsCMAddPositionEnd, vsCMAccessPrivate, strImpl);

    oAssignmentOperator.BodyText = "if(&rhs == this) { return *this; }\n//TODO: real assignment here...\nreturn *this;\n"

Но я все еще не могу понять, как отключить реализацию в * .cpp (x.BodyText = ""; не помогает), а пропущенный параметр strImpl помещает реализацию в файл * .h

0 голосов
/ 18 февраля 2011

(если я правильно понимаю)

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

Вы могли бы написать новый волшебник? M.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...