你能帮我解决这个问题吗?我有四节课。蜜罐标题:
class Honeypot
{
public:
int getNumberOfInterfaces();
Honeypot (int numberOfInterfaces);
virtual std::string typeHoneypot()=0;
protected:
int numberOfInterfaces;
};Honeypot.cpp:
Honeypot::Honeypot(int numberOfInterfaces){
this-> numberOfInterfaces = numberOfInterfaces;
}
int Honeypot::getNumberOfInterfaces(){
return numberOfInterfaces;
}蜜罐类有两个子类: HoneypotV和HoneypotN。现在,我创建了一个带有neteorkInterfaces编号的对象:
Honeypot* NetworkType::createObject(int res1, int res2, int res3) {
if (res1 == 1 && res2 == 1 && res3 == 1) {
HoneypotV p1(3);
return &p1;
} else {
HoneypotN p2(3);
return &p2;
}在main函数中:
NetworkType select;
Honeypot *p;
p = select.createObject(1,1,1);
cout << p->typeHoneypot() << endl;
cout << p-> getNumberOfInterfaces() << endl;typeHoneypot()是正确的,但getNumberOfInterfaces()返回值为-858993460,正确值为3。
感谢您的回复。
发布于 2013-05-28 05:20:59
如果你想返回对象,你应该动态实例化它:
Honeypot* NetworkType::createObject(int res1, int res2, int res3) {
if (res1 == 1 && res2 == 1 && res3 == 1) {
HoneypotV *p1 = new HoneypotV(3);
return p1;
} else {
HoneypotN *p2 = new HoneypotN(3);
return p2;
}发布于 2013-05-28 04:43:15
你返回了一个指向局部变量的指针,但是当你退出函数时,所有的局部变量都将被销毁,并且指针将引用已经销毁的对象
关于main函数中的代码:您声明了一个指向对象的指针,但尚未对其进行初始化,因此指针指向内存中的某些垃圾桶
https://stackoverflow.com/questions/16780271
复制相似问题