C++ cli C++;CLI嵌套默认索引
我有一个包含对象列表的类,其中有一个默认索引属性。每个对象都有一个列表,我想为其创建另一个默认索引C++ cli C++;CLI嵌套默认索引,c++-cli,C++ Cli,我有一个包含对象列表的类,其中有一个默认索引属性。每个对象都有一个列表,我想为其创建另一个默认索引 public ref class Foo { //List of Bars public: property Bar^ default[int]; //Returns a Bar } public ref class Bar { //List of things public: propert
public ref class Foo
{
//List of Bars
public:
property Bar^ default[int]; //Returns a Bar
}
public ref class Bar
{
//List of things
public:
property Thing^ default[int]; //Returns a Thing
}
而不是用
Foo.Bars[i].Things[k]
…我想做一些像
Foo[i][k]
…去拿我的东西
它告诉我
无法使用给定的参数列表调用函数Foo::default[int]::get
参数类型为get(int,int)
…好像我试图调用get(int,int),但这不是我的意图
如果我在Foo中有另一个默认索引,它是二维的,其中第二个维度从条中返回内容,但我希望有一个实现,其中内容无法从Foo访问
非常感谢您的指导。这:
public ref class Thing
{
};
public ref class Bar
{
//List of things
public:
property Thing^ default[int]
{
Thing^ get(int index)
{
return gcnew Thing();
}
}//Returns a Thing
};
public ref class Foo
{
//List of
public:
property Bar^ default[int]
{
Bar^ get(int index)
{
return gcnew Bar();
}
}
};
然后
Foo^ test = gcnew Foo();
Thing^ res = test[5][3];
正确编译。您可能没有包括
get
部分,或者您将Foo
类放在Bar
类之前。很难猜到您做了什么,闻起来您试图让Foo[i,k]工作。它必须是Foo[i][k],这是正确的。Foo[i][k]和Foo[i,k]工作,因为我添加了一个多维默认索引器作为测试。我需要它来测试第一个括号对,并用第二个括号对结果进行索引,它认为它们是同一对象上的两个索引器。可能会有一个装饰者强迫我们这样做吗?请关注向我们展示正确的复制代码。@xanatos下面的代码是复制问题的完美例子。请尝试一下,如果它对您也有效,那么问题肯定在我这边。@HansPassant我有一个“有趣”的问题,我给Bagaboo作为解决方案的代码运行正确,但编辑器(VS2017)将索引器的使用标记为错误(Intellisense给出了E1767错误)。我正在一个“新的”干净的控制台C++/CLI项目上完成它。我在一个新项目中做了完全相同的测试,但得到了相同的错误。这就好像它将test[5][3]视为test::get(5,3)。我们可能会有不同的配置吗?在这种情况下会是什么配置?@Bagaboo我使用的是VS 2017。。。我注意到编辑器将test[5][3]
标记为错误,但编译器编译正确,如果我使用F5运行代码,代码运行正常。这意味着我们有完全相同的“问题”,因为我刚运行它时它就工作了,但intellisense仍然显示错误。我将对此进行故障排除。非常感谢。