无法创建CPngImage类的数组或向量
Cannot create array or vector of CPngImage class
我使用的是MFC Visual Studio 8版本9。我想创建一个CPngImage对象的数组或向量。如果我声明数组为全局数组,那就可以了。如果我试图在中将数组添加到我自己的类中,则会出现以下错误:
afxwin.h(312):错误C2248:"CObject::CObject":无法访问在类"CObject"中声明的私有成员
下面是我尝试做的一个例子:
#pragma once
#include <list>
#include <vector>
#include <iterator>
#include <afxtoolbarimages.h>
#include <afxwin.h>
using namespace std;
#define MAX_IMAGES 30
class PayAppReport
{
private:
CString m_projectName;
CString m_address;
CString m_city;
CString m_county;
CString m_GCcontact;
CString m_weather;
vector<CString> m_contractorsOnSite;
vector<CString> m_workInPlace;
vector<CString> m_workProjected;
vector<CString> m_issues;
vector<CString> m_report;
CPngImage pngImage[MAX_IMAGES];
float m_amount;
int m_payapp,zipCode,currentLine;
COleDateTime m_start,m_stop,m_observation;
bool m_OnSchedule;
CRect printRect;
public:
vector<CString> m_pictures;
PayAppReport(void);
~PayAppReport(void);
void Clear();
void SetProjectName(CString name);
CString GetProjectName();
void SetAddress(CString name);
CString GetAddress();
void SetCity(CString name);
CString GetCity();
void SetCounty(CString name);
void SetCounty(int zipCode);
CString GetCounty();
void SetGCcontact(CString name);
CString GetGCcontact();
void SetAmount(float dollars);
float GetAmountFloat();
CString GetAmountString();
void SetPayAppNumber(int num);
int GetPayAppNumber();
void SetZipCode(int code);
int GetZipCode();
void SetOnSchedule(bool ans);
bool OnSchedule();
void SetStartDate(COleDateTime date);
void SetCompletionDate(COleDateTime date);
void SetObservationDate(COleDateTime date);
COleDateTime GetStartDate();
COleDateTime GetCompletionDate();
COleDateTime GetObservationDate();
void AddContractorsOnSite(CString name);
void AddWorkInPlace(CString name);
void AddWorkProjected(CString name);
void AddIssues(CString name);
void AddPictures(CString name);
int GetNumberOfContractorsOnSite();
int GetNumberOfWorkInPlace();
int GetNumberOfWorkProjected();
int GetNumberOfIssues();
int GetNumberOfPictures();
CString GetContractorsOnSite(int num);
CString GetContractorsOnSite();
CString GetWorkInPlace(int num);
CString GetWorkProjected(int num);
CString GetIssues(int num);
CString GetWorkInPlace();
CString GetWorkProjected();
CString GetIssues();
CString GetPictures(int num);
void SetWeather(CString name);
CString GetWeather();
CString PutList(vector<CString> theList);
void InitializeContractorsOnSite();
void InitializeWorkInPlace();
void InitializeWorkProjected();
void InitializeIssues();
void InitializePictures();
void PutLine(CString rightText, CString leftText, CDC *pDC, HDC hDC, bool indent, int height);
CString toCurrency(float val);
};
有人能解释一下我为什么不能这样做吗?
CObject不是用值语义设计的。因此,CObject的复制构造函数被标记为private。因此,声明一个CObject数组——或者一个从像CPngImage这样的CObject派生的数组——并不是一种方法。
更改数组以容纳指针,而不是整个对象(即CPngImage*而不是CPngImage)。看看这是否有帮助。
(在问这个问题之前,你有没有看过班级的声明?)
相关文章:
- 将数组/向量发送到 c++ 脚本的 cython 示例
- C++:在多个线程中访问同一数组/向量的不同单元格是否会产生数据竞赛?
- 将指向多维数组向量中的单个项的指针传递给函数 c++
- 数组向量的文件 I/O
- 在一行中初始化和引入数组向量的正确方法?
- C++ 返回具有最小硬币的数组/向量以获得价值动态规划
- 将整数向量转换为字节数组向量,然后调用每个字节数组
- 我可以在不循环访问数组/向量的情况下检查数组/向量中的单词吗?
- (C )创建可以从功能访问的动态全局数组/向量
- 提升是否具有用于数组向量的智能指针
- 将函数应用于数组向量的元素
- 数组向量的内存布局是什么
- 获取数组/向量末尾地址的未定义行为
- "Empty"数组\向量成员 C++
- 将字符串向量转换为双2-D数组向量
- 排序多维数组/向量
- 如何创建模板化对象的数组/向量
- 如何在数组向量上使用 std::find
- 无法删除C++中的数组/向量
- 具有元素自定义构造函数的对象数组/向量