这个C++类程序怎么错了?
我是初学者,请大家为我写一个正确可运行的例子可以吗?
#include "iostream.h"
class OutPut
{
public:
OutPut(int aa,char str_1);
SetDate(int aa,char str_1);
private:
char str[30];
int a;
protected:
}Set;
void main(void)
{
Set.SetDate();
return ;
}
OutPut::OutPut(int aa,char str_1)
{
aa=10;
return aa;
}
参考答案:首先,set 不是标准的C++ 保留字。
C++ 包括的关键字, 见如下网页:
lz你的程序有许多不对的地方:
1>
class OutPut
{ ...}Set;
这定义了一个OutPut类,和一个叫做Set的全局的OutPut类对象, 这是C语言的写法,在C++中一般不这样写.可以分开写:
class OutPut
{ ...};
OutPut Set;
2> 类的构造函数不能有返回值.
OutPut::OutPut(int aa,char str_1)
{
aa=10;
return aa;
}
return aa; 是不应当出现的.
3> OutPut类的函数SetDate(); 没有返回值,这将产生编译错误.在C++里,一个函数必须显式的说明返回值,如果确实没有返回值,也必须使用void说明.
void SetDate();
4> 调用Set.SetDate(); 没有实参
5> 调用了SetDate()函数,但是该函数只有声明,但却没有定义 .
6> 在C++中,main()默认返回int型, 可以返回void型.但是某些编译器强制要求main()返回int, 不能返回void.
所以,main()最好返回int.
int main()
{
return 0;
}
根据你的大体意图, 写了一些代码
class OutPut
{
public:
//OutPut();
//OutPut();
int SetDate(int aa,char str_1);
private:
char str[30];
int a;
protected:
};
OutPut Set;
int main()
{
Set.SetDate(10, 'A');
return 0;
}
int OutPut::SetDate(int aa,char str_1)
{
a = aa;
str[0] = str_1;
}
最后一句话, 如果你打算 学习 C++,就要把C++当成一门全新的语言, 认为它与C语言没有任何瓜葛;弄清C++ 和C 语言的区别。