emplace_back带有指针的临时对象

时间:2018-09-18 23:28:52

标签: c++ oop memory-management

我有一个包含指针的类,我想将该类的临时对象推送到向量。我收到两次调用析构函数的错误,但是使用指针矢量可以正常工作。有没有办法不做一个指针矢量来做这种事情?

错误:

class TestClass {
public:
    TestClass() {
        Array = new int[10];
    }
    ~TestClass() {
        delete[] Array;
    }
private:
    int* Array;
};

int main() {
    std::vector <TestClass> Vector;
    Vector.emplace_back(TestClass());

    return 0;
}

精细:

class TestClass {
public:
    TestClass() {
        Array = new int[10];
    }
    ~TestClass() {
        delete[] Array;
    }
private:
    int* Array;
};

int main() {
    std::vector <TestClass*> Vector;
    Vector.emplace_back(new TestClass());

    return 0;
}

其他问题:如果临时对象包含指针,应如何从它们中返回临时对象?仅将它们作为指针返回?

0 个答案:

没有答案