我之前問過一個類似於這個問題的問題,它完美地回答了我的問題,但我有一個新的難題,我不完全明白,如果有人可以幫忙,我將不勝感激。我有以下變量的類:在對象中引用一個指針
ID3D11Buffer* variable
我需要去參考我在繪製調用支持DirectX這個變量,所以我創建一個函數來做到這一點:
const ID3D11Buffer* GetBuffer() const { return &variable; }
但後來我得到這個錯誤,我真的不明白,它是有點難以谷歌:
錯誤C2440:「迴歸」:不能從轉換「ID3D11Buffer * const的*」到「常量ID3D11Buffer *」
有限公司嗯,明智的C++大師請賜教嗎? :D
編輯:有了答案提供了我得到一個新的錯誤,這就是爲什麼我試圖在開始時添加&,我該如何使這條線有效?
繪製調用線:
md3dImmediateContext->IASetVertexBuffers(0, 1, cube.GetBuffer(), &stride, &offset);
下面的答案創建這個新的錯誤:
錯誤C2664: 'ID3D11DeviceContext :: IASetVertexBuffers':不能參數3轉換從 '常量ID3D11Buffer *' 來'ID3D11Buffer * const的*'
原代碼,我不得不做這項工作是
md3dImmediateContext->IASetVertexBuffers(0, 1, &buffer, &stride, &offset);
編輯#2:感謝您的幫助,您的建議使get函數有效,但IASetVertexBuffers函數仍然不喜歡它。它返回此錯誤與新的建議:
錯誤C2664: 'ID3D11DeviceContext :: IASetVertexBuffers':無法從 '常量ID3D11Buffer * const的*' 到 'ID3D11Buffer * const的*' 轉換參數3
謝謝但是這會產生一個新的錯誤,我已經更新了我的帖子的細節:) – user1157885
@ user1157885 I是在你的返回值錯誤的印象之中,實際上它是*返回類型*是錯誤的 - 將你的返回類型改爲'const X * const *'並返回'&variable'。 – 0x499602D2
嗯,謝謝,它使功能有效,但DirectX繪製調用仍然不太喜歡它。我已經用新錯誤更新了我的帖子:( – user1157885