我有一个MFC项目。所以在这个项目中我创建了一个独立的C ++类(一个源文件一个头文件),而不是MFC类。在这个C ++类头文件中,我声明了一个CPtrList(甚至没有在源文件中使用它),但是当涉及到编译时,会出现错误:C2248:' CObject :: operator =' :无法访问类' CObject'中声明的私有成员。
我所拥有的只是一份宣言。我最初认为这是因为我应该#include" afxcoll.h"在头文件的开头,但它没有尝试后。
不知道出了什么问题。有什么帮助吗?
下面的是头文件。不会编译。
#pragma once
#include <iostream>
#include <opencv\cv.h>
#include <opencv\highgui.h>
#include "stdafx.h"
class CMonitor
{
public:
CMonitor(void);
~CMonitor(void);
int horizontalPartition;
int verticalPartition;
int height;
int width;
int differenceThreshold;
bool intrusionIndicator;
bool setMatDimension;
bool setPartition;
int dequePresetSize;
//std::deque<cv::Mat> matDeque;
//CPtrList pMatList;
//Testing purposes:
int currentAvg;
int historyAvg;
void DrawGrid(cv::Mat& img, int verticalPartitionNo, int horizontalPartitionNo);
void PutDebugText(cv::Mat& img);
void MonitorDatabaseUpdate(cv::Mat img);
int SingleCellInHistoryDatabaseAvgComputing(int top, int left, int bottom, int right);
int SingleCellAvgComputing(int top, int left, int bottom, int right);
bool CMonitor::Detector();
void SetPartitionInfo(int horizontalPartition, int verticalPartition);
};
答案 0 :(得分:1)
那么,你有一个使用CPtrList
数据成员的自定义类吗?
然后,从错误消息中,您可能正在尝试复制您的类,并且编译器无法执行此操作,因为CPtrList
(与其他几个旧的MFC容器一样)是不可复制的。
我真的建议使用 STL容器而不是MFC容器(不能复制,有些甚至使用某种形式的&#34;恐怖&#34; memcpy()
进行复制!)
在您的情况下,您可能需要考虑std::vector
或std::list
。