问题标签 [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.
c# - STL/CLR 库使用 IComparable 实现 == 运算符并抛出 NullReferenceException
我有一个没有实现IComparable
接口的 .NET 类。在我在这个类上实现IComparable
接口之后,一些使用我的类的 c++ 代码意外地改变了它的行为。现在它抛出一个NullReferenceException
}
问题出在if (nullptr == unitNames[i])
开始使用IComparable
implementation 执行==
操作的行中!
原因是cliext
实用程序头文件中的模板。
问题 1:我不是 c++ 专家,所以有人可以解释一下为什么这个实现_Left
在调用CompareTo()
方法之前不执行 null 检查吗?根据MSDN Guidelines for Overloading Equals() 和 Operator == null 检查必须在操作员内部执行任何==
操作之前完成。
问题 2:是否存在导致这种不可预测行为的使用缺陷?
vector - C++ CLI: cliext::vector作为公共类函数的返回类型?
我在 C++ CLI 中有下一堂课:
我想从公共功能中接收 int 向量。
这是实现:
我的问题是我收到下一个警告:
警告 C4677:“ListOfNumbers”:非私有成员的签名包含程序集私有类型“cliext::vector<_Value_t>”
有人可以告诉我原因吗?我可以从公共函数 C++ CLI 类接收项目集合吗?
c++ - Visual C++ 中的链接器错误 2022
我有以下头文件(data.h):
和以下 cpp 文件(data.cpp):
这给了我以下链接器错误:
仅当我尝试使用 cliext::vector 作为返回类型时才会发生这种情况。当我使用 std::vector< std::string > 作为返回类型但我想返回 String^ 的向量时,此错误消失了。我无法弄清楚是什么导致了这个错误。此错误仅在使用 cliext::vector 作为返回类型时发生,当我将其用于一般处理时,它也可以正常工作。
.net - 通过 cliext 与 C++CLI .NET 和 STL 的兼容性问题
我正在开发一个简单的Windows::Forms
GUI,并且在尝试使用 STLvector
和pair
通过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
上面的方法中取消引用迭代器时,我得到了同样的错误。
谢谢!
visual-c++ - C++/CLI typedef cliext LNK2022 错误
如果您编写一个 C++/CLI 应用程序,并且您尝试通过 cliext 使用 STL:CLR,并且您键入了例如一个 cliext 映射,那么您会发现它由于 LNK2022 错误而无法工作。