我目前正在为CLI/C++中的原生C++类编写一个包装器。我现在正在上一个小GamePacket课。请考虑以下课程:
public ref class GamePacket
{
public:
GamePacket();
~GamePacket();
generic<typename T>
where T : System::ValueType
void Write(T value)
{
this->bw->Write(value);
}
};
我希望能够在C#中使用包装器调用函数,如下所示:
P
我对c++中的模板和java中的泛型是如何工作的感到有点困惑。如果有人能给我解释一下这段java代码是如何被c++的,那就太好了:
public class Box<T> {
private T t;
public void add(T t1) {
this.t = t1;
}
public T get() {
return t;
}
public <U> void inspect(U u){
System.out.println("T:
我知道在C++中,泛型实际上并不存在,但是您可以使用template来模拟它。当您构建代码时,编译器会对代码进行预处理,并生成一个新代码,替换为对象声明中指定的实际值的泛型值,然后是真正编译的新代码。例如,假设类A如下所示:
template<class T>
class A
{
T f();
};
然后在代码中的其他地方,我们有A<int> a;。实际编译的代码是:
class A
{
//Replaces T by int in the pre-processing
int f();
};
在这整个介绍之后,让我们讲到重点。
我的问题是:
我正在将一个项目从Java转移到C++,我在Java中遇到了一个相对简单的问题。
我有一个X类,用于处理Y类型的对象和从Y继承的对象。X经常需要从Y调用一个方法,比如kewl_method(),这个方法在从Y继承的每个类中都是不同的。在Java中,我可以这样做:
public class X<y extends Y>
我会毫不费力地在X中调用kewl_method(),它会做我想做的事情。如果我理解正确(我是C++新手),在C++中没有有界泛型这样的东西,所以如果我在X中使用模板,它将有可能填充任何东西,并且我将不能调用kewl_method()的变体。
在C++中实现这一点的最佳
我的模特是
class Product(models.Model):
name = models.CharField(max_length=50)
desc = models.CharField(max_length=50)
def __unicode__(self):
return self.name
class ProductModels(models.Model):
product = models.ForeignKey(Product)
na
这是从编译器内部角度提出的问题。
我对泛型感兴趣,而不是模板(C++),所以我用C#标记了这个问题。而不是Java,因为AFAIK两种语言中的泛型在实现上有所不同。
当我查看语言w/o泛型时,它非常简单,您可以验证类定义,将其添加到层次结构中,仅此而已。
但是如何处理泛型类,更重要的是如何处理对它的引用呢?如何确保每个实例化的静态字段都是单数(即每次解决泛型参数时)。
假设我看到一个电话:
var x = new Foo<Bar>();
我是否向层次结构中添加了新的Foo_Bar类?
更新:到目前为止,我只发现了两篇相关的文章,然而,即使它们在“如何自己做”的意义上也没有太多的细节
我是java的新手。但我经常使用c++。我有一个用c++写的类。现在我需要用java重写这个类。我把泛型类型搞糊涂了。
我的c++类是这样的:
//Form, Cmpt are of class type. nCmpt is a integer
template <class Form, class Cmpt, int nCmpt>
class VectorSpace
{
public:
//component array
Cmpt v[nCmpt];
//constructors
VectorSpace();
VectorSpace(const V
我有一个问题(标题中也有):在C++中是否可能像read<type>()一样创建泛型函数?
我已经试过了
template <typename T>
T read() {
T res;
if (typeid(T) == typeid(int))
{
// some stuff
}
else if (/*some other type check*/) {} // etc.
}
当我试图编译它时,它抛出了:Invalid conversion from **** to ****。我知道它为什么要抛出这样的异常,但是
我遇到了这个函数定义:
public Collection<Class<? extends SomeClass>> someFunc();
Class<?部分是什么意思?来自C++,它看起来像模板,但我不太确定是否是这样的,因为在Java中有一些结构看起来像C++,但并不完全相同。无论是哪种情况,我都想知道这意味着什么,以及它是如何使用的。
我查找了这意味着什么,但找不到任何相关的东西(也许这个操作符有一个我不知道的特殊名称)--查找"Class<? in java“返回的结果类似于”java中的类是什么“。我对Java编程相当陌生,所以如果这是一些