
C++高手请进-以下代码有什么问题呢? 5
以下代码有什么问题?structTest{Test(int){}Test(){}voidfun(){}};voidmain(void){Testa(1);a.fun();...
以下代码有什么问题?
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
} 展开
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
} 展开
展开全部
其实楼上有的已经给出答案了,Test b(),这边本意是用Test::Test()来申明,但是这边b后面有了括号,那么编译器就会选择Test::Test(int)来声明,但是编译器又不能找到其中的参数,所以报错,无法生成相应的对象。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Test b();//括号去掉
在没有内容的时候不用括号
加入括号后,这句话就变成了一个函数声明
b是函数名 函数返回类型是Test 函数参数为空
在没有内容的时候不用括号
加入括号后,这句话就变成了一个函数声明
b是函数名 函数返回类型是Test 函数参数为空
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();//声明了一个函数struct Test b(void);,没错,编译过了。
b.fun();//错了,编译器把b当函数了。
}
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();//声明了一个函数struct Test b(void);,没错,编译过了。
b.fun();//错了,编译器把b当函数了。
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二个结构体b()没带参数,因为你定义的时候用的是Test(int)
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b(1);
b.fun();
}
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b(1);
b.fun();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我认为构造函数是class才有的,结构体没有构造函数吧。
你可以把程序改成
class Test
{
public:
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
}
你可以把程序改成
class Test
{
public:
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询