我有函數返回一個對象,但我很困惑,應該返回對象本身還是一個指向對象的指針?使用指針或不使用它們作爲類引用。有什麼不同?
這裏是我的函數的例子:
CImage CDocument::AddImage(string Name, string fileName)
{
CImage img = CImage();
img.Name = Name;
img.Path = fileName;
img.IwImage = Iw2DCreateImage(&fileName[0]);
Images.push_back(&img);
return img;
}
這是正確的或者我應該指針返回對象:正確
CImage * CDocument::AddImage(string Name, string fileName)
{
CImage * img = new CImage();
img->Name = Name;
img->Path = fileName;
img->IwImage = Iw2DCreateImage(&fileName[0]);
Images.push_back(img);
return img;
}
儘管最後的代碼不編譯,因爲我得到這個錯誤:
error C2440: 'initializing' : cannot convert from 'CImage' to 'CImage *'
我認爲這可能是非常簡單的問題。我對C++很陌生,所以對我很感興趣。
沒有看到你的代碼,你應該使Name/Path/etc私有,並在構造函數中賦值。此外,使用'CImage img;'而不是'CImage img = CImage();'。 – Pubby
@Rubby不需要使用new調用CImage的構造函數,並將其創建爲img的實例?它自動發生? – bman
@Dane,是的,你在做什麼*應該*調用一個構造函數,然後調用一個拷貝構造函數來分配它。實際上,它可能不會。 – chris