我有线程安全队列的非托管模板类:
template<class T>
public class TSQueue {...}
和生产者类:
public ref class Producer
{
Producer(TSQueue<int>* Q) {...}
};
Producer的使用方式如下:
Producer^ p = gcnew Producer(new TSQueue<int>());
两者都在一个 C++/CLI DLL Producer.DLL 中定义。
当Producer被实例化并在这个 DLL 中提供了TSQueue<int>*时,编译和执行没有问题。
但是,当我尝试在另一个 C++/CLI dll 中使用TSQueue< int >*实例化Producer时,出现以下编译器错误:
Error 23 error C2664: 'Producer(TSQueue<int>*)' : cannot convert parameter 1 from 'TSQueue<T> *' to 'TSQueue<int> *'
好像编译器无法确定 QI 提供给 Producer 构造函数的类型。
我添加了对 Producer.DLL 的引用。
有谁知道如何克服这个问题。