以下这个c++程序有什么问题吗?为什么在dev c++中编译不过?

#include<iostream>
using namespace std;
class A
{
public:
A(){x=new int;*x=5;}//创建一个对象的同时将成员指针变量保存在新空间中
~A(){delete x;x=NULL;}//析构对象的同时删除成员指针指向的内存空间,为了稳妥起见将 指针赋为空
A(const A &a)
{
cout<<"复制构造函数执行...\n"<<endl;
x=new int;//复制构造对象的同时将成员指针变量保存在新空间中
*x=*(a.x);//读取旧对象的成员指针变量x地址处的数据并赋给新对象的成员指针变量x所指向的内存区域
}
void print()const{cout<<*x<<endl;}
void set(int i){*x=i;}
private:
int *x;
};
int main()
{
A *a=new A();
cout<<"a:"<<a->print()<<endl;
A b=(*a);
a->set(32);
cout<<"b:"<<b.print()<<endl;
b.set(99);
cout<<"a:"<<a->print()<<endl;
delete a;
return 0;
}
vs里也不行

第1个回答  2018-11-22

程序中出问题的是

cout<<"a:"<<a->print()<<endl;

这种写法,有三处。问题在于,print函数没有返回值,cout的<<运算符不能作用于右边是void类型的对象上,所以编译不通过。

可以修改输出形式,如下:

cout << "a:";
a->print();
cout << endl;

这样就不会出现问题了。

第2个回答  2018-11-19
你的头文件有错误:修改如下
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "malloc.h"\\此处有修改
typedef struct node
{
int data;
struct node *next;
}NODE;
main()
{
NODE *head=NULL,*q;
int i;
for(i=0;i<10;i++)
{
q=(NODE*)malloc(sizeof(NODE));
scanf("%d",&q->data);
q->next=head;//从表头插入节点
head=q;
}
printf("链表遍历\n");
q=head;
while(q!=NULL)
{if(q->next!=NULL)
printf("%d->",q->data);
else
printf("%d",q->data);
q=q->next;
}
getch();//输入代码
}本回答被网友采纳
第3个回答  2018-11-19
cout<<"a:"<<a->print()<<endl;
//改成
cout<<"a:"; 
a->print();
cout <<endl;

追问

coutprint()print();cout <<endl;能解释一下为什么要这么写吗?之前那么写为什么不行?

本回答被提问者采纳
相似回答