读书人

vs2010c++编译的时候出现error C2628:

发布时间: 2012-02-27 10:00:22 作者: rapoo

vs2010c++编译的时候出现error C2628: “void”是非法的,为什么??求指教
#include "stdafx.h"
#include "iostream"
#include "vector"
using namespace std;

struct Exmp1
{
Exmp1()//默认构造函数,
{
cout<<"Exmp1()"<<endl;
}
Exmp1(const Exmp1&)//复制构造函数
{
cout<<"Exmp1(const Exmp1&)"<<endl;
}
Exmp1& Exmp1::operator=(const Exmp1& rhs)//“=”-->赋值操作符的重载
{
cout<<"Exmp1& Exmp1::operator=(const Exmp1& rhs)"<<endl;
return *this;
}
~Exmp1()//析构函数
{
cout<<"~Exmp1()"<<endl;
}
}
void fun1(Exmp1 obj){};
void fun2(Exmp1& obj){};

Exmp1 fun3()//普通函数,返回Exmp1类型.无参
{
Exmp1 obj;
return obj;
}
int main()
{
Exmp1 obj;//创建一个Exmp1的对象,这里调用了默认构造函数
Exmp1 eobj;
fun1(obj);//这里调用复制构造函数
fun1(eobj);
eobj=fun3();
Exmp1 *p=new Exmp1;//调用默认构造函数动态创建Exmp1类型的新对象
vector<Exmp1> evec(3);//创建一个存放Exmp1类型对象的容器并
delete p;//调用析构函数释放动态创建的内存
return 0;
}

[解决办法]
请自行对比,func函数附近

C/C++ code
#include "iostream"#include "vector"using namespace std;struct Exmp1{    Exmp1()//默认构造函数,    {        cout<<"Exmp1()"<<endl;    }    Exmp1(const Exmp1&)//复制构造函数    {        cout<<"Exmp1(const Exmp1&)"<<endl;    }    Exmp1& Exmp1::operator=(const Exmp1& rhs)//“=”-->赋值操作符的重载    {        cout<<"Exmp1& Exmp1::operator=(const Exmp1& rhs)"<<endl;        return *this;    }    ~Exmp1()//析构函数    {        cout<<"~Exmp1()"<<endl;    }};void fun1(Exmp1 obj){}void fun2(Exmp1& obj){}Exmp1 fun3()//普通函数,返回Exmp1类型.无参{       Exmp1 obj;    return obj;}int main(){    Exmp1 obj;//创建一个Exmp1的对象,这里调用了默认构造函数    Exmp1 eobj;    fun1(obj);//这里调用复制构造函数    fun1(eobj);    eobj=fun3();    Exmp1 *p=new Exmp1;//调用默认构造函数动态创建Exmp1类型的新对象    vector<Exmp1> evec(3);//创建一个存放Exmp1类型对象的容器并    delete p;//调用析构函数释放动态创建的内存    return 0;} 

读书人网 >C++

热点推荐