关于CXX0030: Error: expression cannot be evaluated的问题
小弟C++初学者,最近在练一个练习,遇到一个不知如何解决的问题,百度了半天也没结果。请CSDN的高手指教。
程序如下:
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
class duple{
int size;
double* data;
public:
duple(int n,double* a){
size=n;
data=new double [size];
for(int i=0;i<size;i++)data[i]=a[i];
}
~duple(){delete[] data;}
duple(const duple&);
duple& operator=(const duple&);
friend duple add(const duple& t,const duple& s);
void print() const;
};
inline duple::duple(const duple &t){
size=t.size;
data=new double [size];//此处出错 CXX0030: Error: expression cannot be evaluated
for(int i=0;i<size;i++)data[i]=t.data[i];
}
inline duple& duple::operator =(const duple &t){
if(this!=&t)
if(size!=t.size){
delete[] data;
data=new double [size=t.size];
}
for(int i=0;i<size;i++)data[i]=t.data[i];
return *this;
}
inline duple add(const duple& t,const duple& s){
if(t.size!=s.size){
cout<<"Size of two duple class are different!";
exit(1);
}
double*a =new double [t.size];
for(int i=0;i<t.size;i++)a[i]=t.data[i]+s.data[i];
return duple(t.size,a);
}
inline void duple::print() const{
cout<<"Size = "<<size<<'\n'<<"Data = ";
for(int i=0;i<size;i++)cout<<data[i]<<'\t';
cout<<'\n';
}
int main(){
int n=10,m=5;
double* a=new double [n];
double* b=new double [n];
for(int i=0;i<n;i++){a[i]=i;b[i]=-i;}
double* c=new double [m];
for(int i=0;i<n;i++){c[i]=i;}
duple da(n,a);
duple db(n,b);
duple dc(m,c);
cout<<"duple da:\n";
da.print();
cout<<"duple db:\n";
db.print();
cout<<"duple dc:\n";
dc.print();
duple dd=da;
duple de(m,c);
//de=db;
cout<<"duple dd=da:\n";
dd.print();
cout<<"duple de(m,c);de=db:\n";
de.print();
duple ab=add(da,db);
cout<<"ab= da add db \n";
ab.print();
//duple ac=add(da,dc);
}
程序整体编译不报错,但是运行会出错,无结果。
单步调试发现在data=new double [size]处有问题。用的是VC2005,不过换了DEV编译器还是如此。
大家帮忙看看哈。谢谢了