亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求查錯,糾結了2個小時沒看出來

求查錯,糾結了2個小時沒看出來

C++
xiele 2016-11-27 08:00:17
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 的構造函數就相當于臨時構造了一個。

查看完整回答
反對 回復 2016-11-27
  • xiele
    xiele
    明白了 謝謝。還是java惹的禍(>_<)
?
何方神圣

TA貢獻11條經驗 獲得超58個贊

Coordinate?c?=?new?Coordinate(7,11); ? 照理說這樣是可以的,但是你的類中構造函數Coordinate(int x=0,int y=0),又將參數賦值,可能有問題吧。只是看一眼,沒在環境測試。

查看完整回答
反對 回復 2016-11-28
?
xiele

TA貢獻6條經驗 獲得超6個贊

找到問題了

學java時留下的習慣

杯具了…………

查看完整回答
反對 回復 2016-11-27
  • onemoo
    onemoo
    其實這就是Java和C++的根本區別:Java只有“引用語義”,而C++有“值語義”和“引用語義”。 C++中直接使用類型等于是使用“值語義”,只有指針或引用類型才能表達“引用語義”。
  • 3 回答
  • 0 關注
  • 1749 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號