错误 C2679 二进制"=":未找到采用类型 'int' 的右侧操作数的运算符(或者没有可接受的转换)

Error C2679 binary '=': no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)

本文关键字:运算符 操作数 或者 转换 可接受 int 二进制 错误 类型 C2679      更新时间:2023-10-16

我正在尝试使用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文件可根据要求提供。

您正在编写Java或C#,而不是C 。C 具有价值语义。通常无法将对象设置为null(这只是值零值的宏)。通常,由于您具有适当的价值,也没有任何需要: T{},默认的构造对象

看起来的问题是您假设OBJ [i]是指T型的指针,但实际上它是T型的对象。OBJ是指向第一个分配的t对象,obj [i]它的t对象在地址obj i*sizeof(t)

相关文章: