我怎样才能使c++中的函数像c#中的属性一样?
本文关键字:属性 一样 c++ 函数 | 更新日期: 2023-09-27 18:12:14
我在c++中有这个函数:
List<String^> ^GetCodecs()
{
List<String^> ^l = gcnew List<String^>;
String ^s;
for (int i=0;i<3333;i++)
{
s = gcnew String(Encoder_GetCodecName( i ));
l->Add(s);
}
return l;
}
这是在c#中,我得到列表:
List<string> l = new List<string>(f.GetCodecs());
所以我包含3333个索引,其中一些是编解码器的名称。
我现在想做的是,在c#中,而不是这样做:List l = new List(f.t getcodecs ());
以某种方式使我能够做例如:
f.GetCodecs .
当我点击GetCodecs之后的点时,它会打开一个新的大的编解码器列表,我可以用箭头上下移动,然后选择我想要的。
比如属性之类的。它现在不像List了
编辑!
的例子:
我在做。getcodecs。
在最后一点之后,我将看到这样的编解码器:
mpejxviddivx
我将立即看到它们,而不需要循环。
我想你在问什么:
当我在c++编辑器中输入
f.GetCodecs.
时,我希望IDE中的在此之后显示编解码器列表,以便我可以从中选择项目一个列表,而不是必须输入f.GetCodecs.mpegCodec
。
如果这是你想要的,那么你需要GetCodecs是(或者返回,如果它是一个方法)一个对象,其字段/方法的名称是你想要的。在设计对象时,您必须选择出现的名称,例如,它不会基于机器上安装的编解码器。
如果我正确地解释了你的问题,那么CodeProject上有一篇很好的文章向你展示了如何做到这一点:c++/CLI Properties - accessor方法的语法糖
你需要显式地使它成为一个属性:
property List<String^> ^GetCodecs
{
List<String^>^ get()
{
List<String^> ^l = gcnew List<String^>;
String ^s;
for (int i=0;i<3333;i++)
{
s = gcnew String(Encoder_GetCodecName( i ));
l->Add(s);
}
return l;
}
}
我没有准备好编译器,所以我不能测试这段代码,但是你明白了。