1. 程式人生 > >error C2248: “CObject::CObject”: 無法訪問 private 成員(在“CObject”類中宣告) [問題點數

error C2248: “CObject::CObject”: 無法訪問 private 成員(在“CObject”類中宣告) [問題點數

請問大家是不是繼承了CObject的類,就不能做為函式的引數?
我寫了這樣一個方法:
int FindItem(CStringArray pstrArray,CString strSource)
{
    retun -1;
}
編譯可以通過,如果使用了該方法就會報錯:
cannot convert parameter 1 from 'class CStringArray'to 'class CStringArray'
No copy constructor available for class 'CStringArray'
但是如果這樣寫就可以通過
int FindItem(CStringArray* pstrArray,CString strSource)
{
    retun -1;
}
CStringArray 是繼承了CObject的,而CString沒有繼承CObject
為什麼啊?

因為為了防止淺拷貝,CObject把拷貝建構函式和和=操作符宣告成private型別的了,外部不能呼叫,所以不能用拷貝物件的方式當引數。可以用引用,如const CStringArray&。
private:
CObject(const CObject& objectSrc);              // no implementation
void operator=(const CObject& objectSrc);       // no implementation