我有一个带有静态工厂方法的类 Foo - Foo::createOne - 它创建一个实例并将一些数据放入 std:vector 类型的私有成员变量中。当我调用 Foo::createOne 时,我的程序抛出此异常:“EXC_BAD_ACCESS(无法访问内存)”
这是代码:
Foo.h
#include <vector>
class Foo {
public:
Foo();
Foo(const Foo& orig);
virtual ~Foo();
static Foo * createOne();
private:
std::vector<int> v;
};
Foo.cpp
#include "Foo.h"
Foo::Foo() {
};
Foo::Foo(const Foo& orig) {
};
Foo::~Foo() {
};
Foo * Foo::createOne() {
Foo *f;
f->v.push_back(5);
return f;
}
主文件
#include <iostream>
#include "Foo.h"
int main(int argc, char** argv) {
std::cout << "Testing createOne." << std::endl;
Foo *myFoo = Foo::createOne();
std::cout << "It worked." << std::endl;
}
修复了一个问题...
感谢您的回答。我修复了未初始化的指针问题(如下)。现在,我收到一个编译器警告“返回局部变量‘f’的地址”
Foo * Foo::createOne() {
Foo f;
f.v.push_back(5);
return &f;
}