这程序有啥毛病啊 怎么编译老出错

来源:百度知道 编辑:UC知道 时间:2024/05/25 11:09:30
#include<iostream.h>
class A
{public:
A(const char*s){cout<<s<<endl;}
~A(){}
};
class B:virtual public A
{public:
B(const char*s1,const*s2):A(s1)
{cout<<s2<<endl;}
};
class C:virtual public A
{public:
C(const*s1,const*s2):A(s1)
{cout<<s2<<endl;}
};
class D:public B,public C
{public:
D(const*s1,const*s2,const*s3,const*s4)
:B(s1,s2),C(s1,s3),A(s1)
{cout<<s4<<endl;}
};
void main()
{D*ptr=new D("class A","class B","class C","class D");
delete ptr;
}

高手给解释下 啊
C:\Documents and Settings\Administrator\桌面\z.cpp(24) : error C2664: '__thiscall D::D(const int *,const int *,const int *,const int *)' : cannot convert parameter 1 from 'char [8]' to 'const int *'
Types pointed to are unrelated

好多地方类型定义有误,例如:const*s1,const*s2,const*s3,const*s4

#include<iostream.h>
class A
{
public:
A(const char*s)
{cout<<s<<endl;}
~A(){}
};
class B:virtual public A
{
public:
B(const char*s1,const char *s2):A(s1)
{cout<<s2<<endl;}
};
class C:virtual public A
{
public:
C(const char*s1,const char*s2):A(s1)
{cout<<s2<<endl;}
};
class D:public B,public C
{
public:
D(const char*s1,const char*s2,const char *s3,const char*s4)
:B(s1,s2),C(s1,s3),A(s1)
{cout<<s4<<endl;}
};
void main()
{
D*ptr=new D("class A","class B","class C","class D");
delete ptr;
}

cannot convert parameter 1 from 'char [8]' to 'const int *..:参数有问题,参数类型不匹配,就是说你不能用char [8]作参数必须用int * 或int[8],虽然我人知道char和int本质上是一回事,但编译器可不这么认为。