【发布时间】:2018-04-16 07:26:05
【问题描述】:
我正在使用 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。
-
无法复制,请发minimal reproducible example。我刚刚将
CPngImage pngImage[3];添加到我的一个类中,它编译得很好 -
至少显示你使用
pngImage的代码片段。 -
@manni66
CObject是CPngImage的祖父母。afxwin.h是 Microsoft 包含文件。 -
添加类的原型和变量没有帮助,它们与问题无关,只会增加不必要的混乱。如果错误消息还有更多内容,that 会有所帮助。