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 關注
- 1749 瀏覽
添加回答
舉報
0/150
提交
取消