Coordinate.h#include <iostream>
using namespace std;
class Coordinate{
public:
Coordinate(int x=0,int y=0){
X=x;
Y=y;
}
void pf(){
cout<<X<<" "<<Y<<endl;
}
private:
int X;
int Y;
};test.cpp#include "Coordinate.h"
int main(){
Coordinate c = new Coordinate(7,11);
c.pf();
}我做个模版练习时出的错,建test.cpp测试,也报错invalid conversion from ‘Coordinate*’ to ‘int’ [-fpermissive]Coordinate c = new Coordinate(7,11);报错位置是test.cpp的第四行 Coordinate c = new Coordinate(7,11);我的构造函数应该没写错吧,为什么说“无效的Coordinate指针指向int”?求大神指点迷津----------------------------------------找到问题了学java时留下的习惯杯具了……顺带问一下函数调用里能不能内嵌构造函数比如:void pf(Coordinate c){
cout<<c.X<<" "<<c.Y<<endl;
}调用时标准写法是Coordinate c1(4,9);
pf(c1);java中可以合成一句:pf(new Coordinate(4,9));c++中用这种写法就报错。请教下大神,c++中有没有类似的语法,应该怎么用?
3 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
回答你最后一个问题:
可以在调用时嵌一个构造函数。这相当于在调用 pf 函数时,先临时构造一个 Coordinate(4, 9),将这个临时构造的作为 pf 的参数传入。 但你的写法有问题。
你在参数列表中写的是 new Coordinate(4,9),这确实是构造了一个 Coordinate(4,9),但是在申请的一块内存中构造的,new 返回的是指向这个临时对象的指针(Coordinate*类型),而 pf 的参数要求是 Coordinate 类型,类型不匹配所以报错。
正确地写法其实很简单 pf(Coordinate(4,9)); 直接写 Coordinate 的构造函数就相当于临时构造了一个。
何方神圣
TA贡献11条经验 获得超58个赞
Coordinate c = new Coordinate(7,11); 照理说这样是可以的,但是你的类中构造函数Coordinate(int x=0,int y=0),又将参数赋值,可能有问题吧。只是看一眼,没在环境测试。
- 3 回答
- 0 关注
- 1670 浏览
添加回答
举报
0/150
提交
取消