Создание типа указателя C ++ / CLI через System.CodeDom - PullRequest
0 голосов
/ 07 апреля 2011

Я генерирую код C ++ / CLI через System.CodeDom .NET.

Недавно мне пришлось создать метод C ++ / CLI с указателем, например int foo(char *data) , что оказалось непросто.

System.CodeDom.CodeParameterDeclarationExpression(type, name) создает параметры только с дескрипторами (^), а не с пуарами (*), и я не могу найти способ сделать это.

Как это можно сделать?Любая подсказка приветствуется.

Ответы [ 2 ]

1 голос
/ 18 августа 2011

Наконец, я решил использовать программно удалить звездочку из типа, создать CodeTypeReference для типа без звездочки и создать переменную с именем, начинающимся со звездочки.

Другой способ - создать ключ «ForceTypePassThrough» дляСловарь пользовательских данных такого типа:

CodeTypeReference tmpTypeRef = new CodeTypeReference("char *");
tmpTypeRef.UserData["ForceTypePassThrough"] = true;

CodeVariableDeclarationStatement tmpVarDecl = new CodeVariableDeclarationStatement(tmpTypeRef, "tmpData");

. Эти способы работают.

0 голосов
/ 07 апреля 2011

Я ничего не знаю о типах указателей C ++ / CLI, в частности, но вы можете использовать Type.MakePointerType, чтобы создать тип указателя для данного типа без указателя. Вы пробовали использовать:

new CodeParameterDeclarationExpression(typeof(char).MakePointerType(), "data")
...