创建一个数组类,使它们像向量一样

时间:2015-04-30 20:38:26

标签: c++

我必须创建一个类,使数组像矢量一样。当我尝试将类传递到我的主要方法中时,我得到一个错误,告诉我" ["和"]"不正确的运营商。我想知道我是不是完全做错了,或者这只是一个简单的错误。非常感谢帮助。这是我的头文件:

#ifndef PROGRAM5HEADER_H
#ifndef PROGRAM5HEADER_H
#define PROGRAM5HEADER_H
#include <string>

        using namespace std;

class FloatArray
{
        int *rep;
        int _size;
public:

FloatArray(int sz=100):_size(sz)
  {
        rep=new int[sz];
  }
~FloatArray()
  {
        delete [] rep;
  }
int size() const
{
     return _size;
}
FloatArray(const FloatArray& x)
  {
        copy(x);
  }
void copy(const FloatArray& x)
  {
        _size == x.size();
        rep=new int[_size];
        for(int k=0;k<_size;k++)
                rep[k]=x.rep[k];
  }




    };

    #endif

这是我的主程序

#include <iostream>
#include <string>
#include <cstdlib>
#include "program5header.h"
#include <cmath>
        using namespace std;

int meanstd(FloatArray x, int& std)
{
        int sx=0,sx2=0,mean;
        for(int i=0;i<x.size();i++)
        {
           sx+=x[i];
           sx2+=x[i]*x[i];
        }
   mean=sx/x.size();

 std=sqrt(sx2/x.size()-mean*mean);
return mean;
}
int main()
{       int f;
        cout<<"How big of an array would you like: "<<endl;
        cin>>f;
        FloatArray x(f);



}

1 个答案:

答案 0 :(得分:0)

你的很多实施都存在很多问题,我建议你就这个问题做一些研究。我会触及一些。

首先,您应该使FloatArray成为模板化类,并允许除int之外的其他类型。

初始化FloatArray x然后尝试通过&#34; []&#34;访问它的基础数组;你实际上是在调用以下内容:

x.operator[](...)

您尚未定义&#39; []&#39;您的FloatArray类上的运算符,以便您收到错误。

你需要类似的东西:

int FloatArray.operator[](int index) {
  assert(index < _size);
  return _rep[index]
}

你的副本没有做你想做的事情,也没有把尺寸复制到&#34;这个&#34;。它看起来应该与此类似:

void copy(const FloatArray& x)
{
  _size = x._size;
  rep=new int[_size];
  for(int k=0;k<_size;k++)
    rep[k]=x.rep[k];
}

但是我建议不要使用复制方法,而是在复制构造函数中实现所有内容。