菜鸟问题,散分了

时间:2022-09-30 21:38:55
问题是这样的,我需要在一个类里边用到另外一个类的指针,找到了一段源代码,里边用了New来得到一个类的指针,结果编译时,通不过,原因是那个类的构造函数是protect型,错误提示如下:error C2248: 'CProdView::CProdView' : cannot access protected member declared in class 'CProdView',我后来用了友元也不行,自己声明添加了要用类的指针(添加要用的类的指针 CProdView* aView),调试时发现根本没有分配内存,最后把要用类的构造函数改为public了,通过了,但执行时出现内存错误,望各位给予解决,谢谢

17 个解决方案

#1


把代码贴一下吧,这样说总是很模糊的

#2


mfc中的CView派生类,是跟CFrameWnd的搅和在一起的,单独使用会有很多断言错误

#3


把你所代码拿出来秀秀吧.

#4


贴代码吧,只要关键的地方

#5


你仅仅是拥有一个CProdView* aView指针是不行的,不管它的构造函数是public还是protected(当然,这里必须是public,否则你无法调用),你都必须先把那个对象new出来才能使用,否则,aView指针只是NULL(如果你初始化了的话)或者是一个野指针,当然会内存错误罗。记住,声明了指向什么对象的指针,该对象并不会自动被创建。

#6


用private继承,能行

#7


不好意思:我搞错了sorry

#8


多谢楼主!接分!

#9


看看代码 说好吧……

#10


jf

#11


?

#12


代码呢,
VC sp6打上了吗?

#13


你new出来的指针没有指向一个该类型的对象,当然会出错了!
至于那个构造函数,当然要public了。

#14


应该可以用protected,但执行时的内存错误有点奇怪。

#15


回答得好

#16


up

#17


up

#1


把代码贴一下吧,这样说总是很模糊的

#2


mfc中的CView派生类,是跟CFrameWnd的搅和在一起的,单独使用会有很多断言错误

#3


把你所代码拿出来秀秀吧.

#4


贴代码吧,只要关键的地方

#5


你仅仅是拥有一个CProdView* aView指针是不行的,不管它的构造函数是public还是protected(当然,这里必须是public,否则你无法调用),你都必须先把那个对象new出来才能使用,否则,aView指针只是NULL(如果你初始化了的话)或者是一个野指针,当然会内存错误罗。记住,声明了指向什么对象的指针,该对象并不会自动被创建。

#6


用private继承,能行

#7


不好意思:我搞错了sorry

#8


多谢楼主!接分!

#9


看看代码 说好吧……

#10


jf

#11


?

#12


代码呢,
VC sp6打上了吗?

#13


你new出来的指针没有指向一个该类型的对象,当然会出错了!
至于那个构造函数,当然要public了。

#14


应该可以用protected,但执行时的内存错误有点奇怪。

#15


回答得好

#16


up

#17


up