我試圖將一個常量結構指標傳遞給一個自動生成的C API代碼的setter setContainer,所以我不能改變類:
#include <iostream>
#include < memory>
class Class //class definition
{
public:
struct Container //容器定義 //容器定義
{
double value = 0.0;
};
Class() { } //建構式。
~Class() { } // destructor
void setContainer(const Container * pContainer)
{
mContainer = *pContainer; // setter{
}
const Class::Container & getContainer() const
{
return mContainer; // getter
}
private:
容器mContainer。
};
如你所見,我不知道如何以正確的方式將結構物件傳遞給setContainer方法。智能指標會更好,因為我使用的是C 14.
int main()
{
類objClass。
const auto container1 = objClass.getContainer()。
// Output: container1.value: 0.0
std::cout << "container1.value: " << container1.value << std::endl;
//需要在運行時設定這一點。
Class::Container container2;
container2.value = 5.0。
//輸出:container2.value: 5.0。
std::cout << "container2.value: " << container2.value << std::endl;
// ERROR: no matching function for call to 'Class::setContainer(Class::Container&) '
objClass.setContainer(container2)。
const auto container3 = objClass.getContainer()。
// Desired Output: container3.value: 5.0 (setContainer)
std::cout << "container3.value: " << container3.value << std::endl;
return 0;
我真的很希望得到一些幫助,使其正確。
uj5u.com熱心網友回復:
你的setter函式期望一個指向Container物件的指標,所以給它一個:只要在你的引數中加入&運算子:
objClass.setContainer(&container2)。
uj5u.com熱心網友回復:
你可以使用智能指標和get()函式來提取原始指標,如下所示
std::shared_ptr<Class::Container>m_container2 = std::make_shared<Class::Container> (container2)。
objClass.setContainer(m_container2.get())。
或者你可以使用&運算子來獲取指標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314134.html
標籤:
上一篇:將模板化的引數包傳遞給回呼函式(也是一個模板化的函式)。
下一篇:找到最短的時間
