1>d:\program files\microsoft visual studio 2010\vc\atlmfc\include\afxtempl.h(262): error C2248: “CObject::CObject”: 無法訪問 private 成員(在“CObject”類中宣告)
1> d:\program files\microsoft visual studio 2010\vc\atlmfc\include\afx.h(534) : 參見“CObject::CObject”的宣告
1> d:\program files\microsoft visual studio 2010\vc\atlmfc\include\afx.h(509) : 參見“CObject”的宣告
1> 此診斷出現在編譯器生成的函式“CArray<TYPE,ARG_TYPE>::CArray(const CArray<TYPE,ARG_TYPE> &)”中
1> with
1> [
1> TYPE=int,
1> ARG_TYPE=int &
1> ]
自己寫的代碼
CArray<int,int &> CPlotChartControl::GetXSeletedIndexs(void)
{
double scaleX = m_rectPlot.Width() / (m_xAxis.fMax - m_xAxis.fMin);
double fxL ;
int max=m_curSelectRect.right;
int min=m_curSelectRect.left;
for(int i=0;i<m_nLen;i++)
{
fxL = m_rectPlot.left+(m_pXData[i] - m_xAxis.fMin) *scaleX ;
if(fxL>min&&fxL<max)
m_selectPointXIndexs.Add(i);
}
return m_selectPointXIndexs;
請大神幫忙
uj5u.com熱心網友回復:
i的型別不是int &uj5u.com熱心網友回復:
??具體可以怎么修改??CPoint MaximaPoint;
MaximaPoint.x = static_cast<int>(m_rectPlot.left + (m_pXData[j] - m_xAxis.fMin) * scaleX);
MaximaPoint.y = static_cast<int>(m_rectPlot.bottom - (m_pYData[j] - m_yAxis.fMin) * scaleY);
if(!m_selectPointVIndex.IsEmpty()) //查看m_selectPointVIndex是否有重復的索引號
{
bool bflags = false;
for(int k=0; k<m_selectPointVIndex.GetSize(); k++)
{
if(j == m_selectPointVIndex.GetAt(k))
bflags = true;
}
if(bflags) //有重復序號
;
else //沒有重復序號
{
m_selectPoint.Add(MaximaPoint);
m_selectPointVIndex.Add(j);
}
}
else //第一次選取的點
{
m_selectPoint.Add(MaximaPoint); //存極值的點坐標
m_selectPointVIndex.Add(j); //存極值點的索引號
}
Invalidate();
}
別人程式也這樣編譯沒問題
uj5u.com熱心網友回復:
你的 m_selectPointXIndexs怎么定義的uj5u.com熱心網友回復:
CArray<int,int &> ->CArray<int,int>
uj5u.com熱心網友回復:
CArray<int,int &> m_selectPointXIndexs;// 選取頻率的X軸索引
這樣定義的
uj5u.com熱心網友回復:
測驗了一下,不會出錯
CArray<int,int &> m_selectPointXIndexs;
for (int i=1 ;i <3;i++)
{
m_selectPointXIndexs.Add(i);
}
uj5u.com熱心網友回復:
頭疼,之前運行沒錯,后來寫了一個函式,運行就有問題,現在把函式取消,還是沒用
uj5u.com熱心網友回復:
CArrayThe CArray class supports arrays that are similar to C arrays, but can dynamically shrink and grow as necessary.
template< class TYPE, class ARG_TYPE > class CArray : public CObject
At a Glance
Header file: Afxtempl.h
Platforms:
Versions: 1.0 and later
Complete documentation: Visual C++ documentation
See Also
CArray Member Functions, CArray Operators, CObArray
CArray::Add
int Add( ARG_TYPE newElement );
throw( CMemoryException );
Return Value
The index of the added element.
Parameters
ARG_TYPE
Template parameter specifying the type of arguments referencing elements in this array.
newElement
The element to be added to this array.
Remarks
Adds a new element to the end of an array, growing the array by 1. If SetSize has been used with an nGrowBy value greater than 1, then extra memory may be allocated. However, the upper bound will increase by only 1.
Example
// example for CArray::Add
CArray<CPoint,CPoint> ptArray;
CPoint pt(10,20);
ptArray.Add(pt); // Element 0
ptArray.Add(CPoint(30,40)); // Element 1
CArray Overview | Class Members | Hierarchy Chart
See Also CArray::SetAt, CArray::SetAtGrow, CArray::InsertAt, CArray::operator []
uj5u.com熱心網友回復:
一個成員變數 干嘛把他整成回傳值 我就從來沒這么用過uj5u.com熱心網友回復:
回傳 CArray 需要拷貝建構式,而 CArray 基于 CObject。
CObject 禁止的。
她的 拷貝建構式是私有的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/142512.html
標籤:基礎類
