vector存结构体,而该结构体中又含vector 编译出错,求教育

a635601302 2013-01-17 04:29:32
是这样的:
结构体AA
typedef struct AA
{
int x;
vector<BB> v_BB;
}AA;

结构体BB
typedef struct BB
{
int y;
vector<CC> v_CC;
}BB;

结构体CC
typedef struct CC
{
int Z;
}CC;

执行语句:
AA aa; BB bb;
aa.v_BB.push_back(bb);

此时出错。
出错信息:error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'

求教各位,我应该怎么办?最好给个简单的代码。非常非常感谢!
...全文
215 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
a635601302 2013-01-17
  • 打赏
  • 举报
回复
MD,发的帖子无法编辑,我先关闭重发该贴!
a635601302 2013-01-17
  • 打赏
  • 举报
回复
实在不好意思,各位,我这里少写了一句,就是在结构体CC里边有一个CStringArry m_arry; 我认为不是它的原因就没写,结果我发现应该是它的原因。 不知道对不对。如果是,应该怎么解决
a635601302 2013-01-17
  • 打赏
  • 举报
回复
我这里结构体顺序是写错了,先cc,再bb,再aa。我程序里边是对的。但是编译还是那样 vs2010
lcgboy 2013-01-17
  • 打赏
  • 举报
回复
vs2005测试,没有任何问题,应该是你的结构声明顺序有问题或者头文件包含问题:
#include <vector>

struct C
{
	int c;
};

struct B 
{
	std::vector<C> m_vecC;
};
struct A 
{
	std::vector<B> m_vecB;
};

int _tmain(int argc, _TCHAR* argv[])
{
	A a;
	B b;
	C c;
	
	b.m_vecC.push_back(c);

	a.m_vecB.push_back(b);
	return 0;
}

a635601302 2013-01-17
  • 打赏
  • 举报
回复
我源代码是声明了的,这里不是声明的问题,以上代码 我只是写了几个关键的东西出来。如果我注释掉结构体BB里边的vector<CC> v_CC;就不会出问题,但是我必须要用vector<CC> v_CC;没办法。 typedef struct BB { int y; //vector<CC> v_CC; }BB; 问题是 一个结构体AA里边 有一个vector,该vector里边存的是另一个结构体BB。而该结构体BB里边有一个成员又是vector。所以出错。 继续求教!
jimette 2013-01-17
  • 打赏
  • 举报
回复
要事先声明的!
jimette 2013-01-17
  • 打赏
  • 举报
回复
struct BB; typedef struct AA { int x; vector<BB> v_BB; }AA;

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧