2016-03-14 265 views
0

代碼摘要:打印指針地址

需要通過攝像機的對象從TestCamera.cpp到Test1.cpp。 我創建了一個TestCamera.cpp類的對象 現在,我想將它傳遞給Test1,所以我將它傳遞給另一個對象。

無論如何,我得到錯誤的「相機*」到Test1.cpp。

我是CPP的新手。打印它的指針值是否是完美的方式來傳遞另一個類&?

TestCamera.cpp

Camera * cameraClient=static_cast<Camera *>(); 

    (Test1 *)->captureImage(*cameraClient*); 

Test1.cpp

int Test1::captureImage(const Camera* Cam) { 

    jint lResult; 
    jlong ad = (jlong)&Cam; 
     LOGI("Test1: pointer : APP: %ld",ad); 
+1

你應該表現出一點更多的代碼,因爲這兩條線你'TestCamera.cpp'表現是如此狂野我創建甚至無法開始弄清楚你想要達到的目標。我需要包含Camera.h類的 – paddy

回答

1

我沒有得到你的整個代碼,但只是給你暗示,你逝去的是錯誤的方式..您需要像這樣通過:

(Test1 *) - > captureImage(cameraClient);

但是,我懷疑是因爲你沒有分配內存給cameraClient。

下面

是多餘的提醒,這是你的問題:

在C++

,當你想動態創建一個類的對象,那麼你需要使用象下面這樣來分配內存:

Camera * cameraClient= new Camera; 

其實例類相機&的,然後把它傳遞給CaptureImage如果測試1級已經實例..

+0

。我得到:'class:error的前一個定義。 – NovusMobile

+0

需要更多的代碼才能得到確切的想法 –

+0

你的問題只是打印指針值,我已經給你的問題提供了足夠的答案。如果有任何其他錯誤,然後發佈完整的代碼與另一個問題 –

1

在TestCamera.cpp的代碼片段是不正確的,當你說ŧ帽子要創建一個對象,那麼你需要或者使用new操作或定義對象,如下

Camera * cameraClientPtr=new Camera; // For default constructor 
Camera cameraClientObj; 

你調用方法captureImage也沒有正確的方式。如果你有Test1指針使用上述任何一種方式,那麼你調用如下的方法,

Test1Ptr->captureImage(cameraClientPtr); 

Test1Obj.captureImage(&cameraClientObj); 
+0

我應該寫:int Test1 :: captureImage(const Camera * camera)。 攝像頭*在Test1班或我只需要使用攝像頭? – NovusMobile

+1

如果作爲指針傳遞,則使用'int Test1 :: captureImage(const Camera * camera)',將其作爲參考'int Test1 :: captureImage(const Camera&camera)'傳遞。你可以通過這個[link](http://stackoverflow.com/questions/373419/whats-the-difference-between-passing-by-reference-vs-passing-by-value)和這個[link](http ://courses.washington.edu/css342/zander/css332/passby.html)以獲得更多關於如何將數據傳遞給方法的信息。 – Panch