问题标签 [cliext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
146 浏览

c# - STL/CLR 库使用 IComparable 实现 == 运算符并抛出 NullReferenceException

我有一个没有实现IComparable接口的 .NET 类。在我在这个类上实现IComparable接口之后,一些使用我的类的 c++ 代码意外地改变了它的行为。现在它抛出一个NullReferenceException

}

问题出在if (nullptr == unitNames[i])开始使用IComparableimplementation 执行==操作的行中!

原因是cliext实用程序头文件中的模板。

问题 1:我不是 c++ 专家,所以有人可以解释一下为什么这个实现_Left在调用CompareTo()方法之前不执行 null 检查吗?根据MSDN Guidelines for Overloading Equals() 和 Operator == null 检查必须在操作员内部执行任何==操作之前完成。

问题 2:是否存在导致这种不可预测行为的使用缺陷?

0 投票
3 回答
2964 浏览

vector - C++ CLI: cliext::vector作为公共类函数的返回类型?

我在 C++ CLI 中有下一堂课:

我想从公共功能中接收 int 向量。

这是实现:

我的问题是我收到下一个警告:

警告 C4677:“ListOfNumbers”:非私有成员的签名包含程序集私有类型“cliext::vector<_Value_t>”

有人可以告诉我原因吗?我可以从公共函数 C++ CLI 类接收项目集合吗?

0 投票
0 回答
864 浏览

c++ - Visual C++ 中的链接器错误 2022

我有以下头文件(data.h):

和以下 cpp 文件(data.cpp):

这给了我以下链接器错误:

仅当我尝试使用 cliext::vector 作为返回类型时才会发生这种情况。当我使用 std::vector< std::string > 作为返回类型但我想返回 String^ 的向量时,此错误消失了。我无法弄清楚是什么导致了这个错误。此错误仅在使用 cliext::vector 作为返回类型时发生,当我将其用于一般处理时,它也可以正常工作。

0 投票
1 回答
287 浏览

.net - 通过 cliext 与 C++CLI .NET 和 STL 的兼容性问题

我正在开发一个简单的Windows::FormsGUI,并且在尝试使用 STLvectorpair通过cliext包时遇到了一些问题。基本上,我用底层实现了一个非常简单(和幼稚)的双向映射cliext::vector< cliext::pair<A, B> >。我现在根本不关心效率,它的所有实例都只会包含少数条目,所以我的幼稚线性搜索不会成为问题。

但是,因为我想在我的Windows::Forms实例中使用这些映射,所以我将它设为托管类。问题是我无法弄清楚如何修改地图的各个条目。

这是基本界面(为简洁起见,我将函数def放在这里):

两种SetInternal方法都不起作用。迭代器方法只是给我一个编译错误,它说“第一个左边必须是一个类/结构/联合......你的意思是 - >”但这对我来说没有意义,因为 Visual Studio 已经说它是错误的使用 -> 当我使用 . IntelliSense 甚至在列表中显示“第一”和“第二”。

直接的方法也行不通。它编译并运行,但实际上并没有修改该对的值(即使它返回 true!)。

此外,我包含了 SetExternal 函数,因为它实际上工作正常。这告诉我通过索引搜索bmap向量工作正常,条件bmap[i]很好,它可以设置外部变量。

关于如何编写一种SetInternal方法来修改向量中的单个对有什么想法吗?我还需要一种在外部迭代 bimap 的方法,并且我想使用 const 迭代器(即,具有将 const 迭代器返回到底层的 begin 和 end 的成员方法bmap)但是当我尝试在外部使用它并取消引用iterator 当我尝试在SetInternalByLeftWithIterator上面的方法中取消引用迭代器时,我得到了同样的错误。

谢谢!

0 投票
1 回答
141 浏览

visual-c++ - C++/CLI typedef cliext LNK2022 错误

如果您编写一个 C++/CLI 应用程序,并且您尝试通过 cliext 使用 STL:CLR,并且您键入了例如一个 cliext 映射,那么您会发现它由于 LNK2022 错误而无法工作。