我必须创建一个类,使数组像矢量一样。当我尝试将类传递到我的主要方法中时,我得到一个错误,告诉我" ["和"]"不正确的运营商。我想知道我是不是完全做错了,或者这只是一个简单的错误。非常感谢帮助。这是我的头文件:
#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);
}
答案 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];
}
但是我建议不要使用复制方法,而是在复制构造函数中实现所有内容。