Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取错误“;二进制';[';:';const typ';未定义此运算符或“subscript”需要数组或指针类型_C++_Arrays - Fatal编程技术网

C++ 获取错误“;二进制';[';:';const typ';未定义此运算符或“subscript”需要数组或指针类型

C++ 获取错误“;二进制';[';:';const typ';未定义此运算符或“subscript”需要数组或指针类型,c++,arrays,C++,Arrays,在一个模板类中,我有一个函数,它将一个numb元素数组插入到所选索引的另一个数组中 template <class T> void my_vect<T> ::insert(const T &ob, size_t ind, size_t numb) { int i, j = 0; if (ind == last + 1) { for (i = 0; i < numb; i++) push(ob[i

在一个模板类中,我有一个函数,它将一个numb元素数组插入到所选索引的另一个数组中

template <class T>
void my_vect<T> ::insert(const T &ob, size_t ind, size_t numb)
{
    int i, j = 0;
    if (ind == last + 1)
    {
        for (i = 0; i < numb; i++)
            push(ob[i]);
    }
    else if (ind > last + 1)
        msg.mess(my_mess::WARN_ARR_SMALL);
    else
    {
        if (last + numb > ndim)
        {
            msg.mess(my_mess::WARN_ARR_FULL);
            realloc();
        }

        last += numb;
        for (i = last; i = (ind + numb); i--)
        {
            dat[i] = dat[i - numb];
        }

        for (i = ind; i < (ind + numb); i++)
            dat[i] = ob[j++];
    }
}
麦库尔德

#pragma once
#include "stdafx.h"
#include "my_mess.h"
#include <iostream>
using namespace std;

class mcoord
{
protected:
    double *pcoord;
    my_mess msg;
public:
    mcoord(double xx, double yy);
    mcoord();
    mcoord(const mcoord &ob);
    ~mcoord() { delete[] pcoord; }
    friend ostream & operator << (ostream &strm, const mcoord &ob);
    friend istream & operator >> (istream &strm, mcoord &ob);
    mcoord & operator = (const mcoord &ob);
    int operator == (const mcoord &praw) const;

private:
    void alloc();
};
这两个错误都在模板类中,与ob[i]和ob[j++]对齐。
我找不到任何解决方案,因此非常感谢您的帮助。

您需要将函数声明为:

template <class T>
void my_vect<T> ::insert(const T *ob, size_t ind, size_t numb)
模板
作废我的向量::插入(常量*对象、大小索引、大小编号)
换句话说,使
ob
成为指针而不是引用

#pragma once
#include "stdafx.h"
#include "my_mess.h"
#include <iostream>
using namespace std;

class mcoord
{
protected:
    double *pcoord;
    my_mess msg;
public:
    mcoord(double xx, double yy);
    mcoord();
    mcoord(const mcoord &ob);
    ~mcoord() { delete[] pcoord; }
    friend ostream & operator << (ostream &strm, const mcoord &ob);
    friend istream & operator >> (istream &strm, mcoord &ob);
    mcoord & operator = (const mcoord &ob);
    int operator == (const mcoord &praw) const;

private:
    void alloc();
};
error C2109: subscript requires array or pointer type   
template <class T>
void my_vect<T> ::insert(const T *ob, size_t ind, size_t numb)