c++,构造函数与成员函数在一起,调用函数,出现错误,求解?

韬博 2014-05-04 10:38:07
#include<iostream>
using namespace std;
class base1
{
public:
base1(int x)
{ a=x;
cout<<"base1 a="<<a<<endl;
}

private:
int a;

};
class base2
{
public:
base2(int x)
{ b=x;
cout<<"base2 b="<<b<<endl;
}
private:
int b;

};
class derived:public base2,public base1
{
public:

derived::derived(int x,int i,int j):base1(i),base2(j)

{
c=x;
cout<<"derived c="<<c<<endl;
}
void function(int x,int y)
{
d=x*y;
cout<<"d="<<d<<endl;
}
private:
int c,d;

};

int main()
{

derived obj3; // 调用function函数,出现错误

obj3.function(11,3);


return 0;
}
...全文
199 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyong 2014-05-05
  • 打赏
  • 举报
回复
自己再写个无参数构造函数
Fire_Lord 2014-05-05
  • 打赏
  • 举报
回复
你定义了带参数的构造函数,编译器就不会再帮你生成默认的无参构造函数,所以

derived  obj3; 
是无法编译通过的,因为其会调用无参的构造函数。
f_liu 2014-05-05
  • 打赏
  • 举报
回复
最好加一个默认的构造函数……
YCMyTot 2014-05-05
  • 打赏
  • 举报
回复
额。。。 我改了一下 好像 对了吧 : #include<iostream> using namespace std; class base1 { public: base1(int x) { a=x; cout<<"base1 a="<<a<<endl; } private: int a; }; class base2 { public: base2(int x) { b=x; cout<<"base2 b="<<b<<endl; } private: int b; }; class derived:public base2,public base1 { public: /*derived::*/derived(int x,int i,int j):base1(i),base2(j) // 在函数体内 写构造函数是 应该 注意其 格式 { c=x; cout<<"derived c="<<c<<endl; } void function(int x,int y) { d=x*y; cout<<"d="<<d<<endl; } private: int c,d; }; int main() { derived obj3(1,11,3); //调用构造函数 应该传入 三个 参数 obj3.function(11,3); return 0; }
浩_4857 2014-05-05
  • 打赏
  • 举报
回复
derived obj3(); // 调用function函数,出现错误 error C2512: 'derived' : no appropriate default constructor available 没有可用的形参传给derived构造函数,你自己给它加三个形参就可以了
king1076 2014-05-04
  • 打赏
  • 举报
回复
有参构造函数 和 无参构造函数 。基本功哇 ,好好看书
AndyStevens 2014-05-04
  • 打赏
  • 举报
回复
derived  obj3(1,2,3); 
知行year 2014-05-04
  • 打赏
  • 举报
回复
derived(int x,int i,int j): 这有三个形参 obj3.function(11,3); 这只输入两个实参
y516599087 2014-05-04
  • 打赏
  • 举报
回复
你没有调用应该有的构造函数啊,默认的构造函数被你的
derived::derived(int x,int i,int j):base1(i),base2(j)
给覆盖掉了。 derived obj3; // 调用function函数,出现错误 改成 derived obj3(1,2,3) 应该就对了

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧