我正在尝试使用DirectX 12在C ++中创建一个动态数组。我在这里发现了一个很好的更改,因为它是为DirectX 11创建的。
运行时出现此错误。
严重级代码描述项目文件行抑制状态
错误C2679二进制'=':找不到哪个运算符采用'int'类型的右手操作数(或者没有可接受的转换)
以下是它所说的代码有问题。
Vector(int a)
{
size = a;
obj = new T[size];
for(int i = 0 ; i<size; i++)
{
obj[i] = NULL;
}
}
这是完整的标题。
#include<iostream>
using namespace std;
template <class T>
class Vector
{
private:
int size,capacity;
T *obj;
public:
Vector()
{
size = capacity = 0;
obj = NULL;
}
~Vector()
{
delete [] obj;
}
Vector(int a)
{
size = a;
obj = new T[size];
for(int i = 0 ; i<size; i++)
{
obj[i] = NULL;
}
}
int size_of_list();
bool empty();
void reserve(int);
T& operator[](int);
T at(int);
T front();
T back();
void push_back(T element);
void pop_back();
void insert(int,T);
void erase(int);
};
.cpp文件可根据要求提供。
答案 0 :(得分:1)
你正在编写java或C#,而不是c ++。 C ++具有值语义。对象通常不能设置为NULL(这只是值为零的宏)。通常,也没有任何需要,因为你有一个合适的值:T{}
,默认的构造对象
答案 1 :(得分:0)
看起来问题是你假设obj [i]是一个指向类型T的指针,但它实际上是一个类型为T的对象.obj是一个指向第一个分配的T对象的指针,obj [i ]它是地址obj + i * sizeof(T)
的T对象