Невозможно создать массив или вектор класса CPngImage

Я использую 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);
};

Может кто-нибудь объяснить, почему я не могу этого сделать?

-2

Решение

CObject не разработан с семантикой значения. Таким образом, конструктор копирования CObject помечается как закрытый. Таким образом, объявление массива CObject — или массива чего-то, производного от CObject, такого как CPngImage, — не лучший способ.

Измените ваш массив, чтобы он содержал указатели, а не целые объекты (т.е. CPngImage * вместо CPngImage). Посмотрите, поможет ли это.

(Вы даже взглянули на объявление класса, прежде чем задавать этот вопрос?)

0

Другие решения

Других решений пока нет …