【发布时间】:2012-07-02 19:18:54
【问题描述】:
我有一个包含几个向量的类,我不确定哪种方法最好,但是当我调用析构函数时,它们应该从内存中删除。
标题:
class Test
{
public:
Test();
~Test();
void AddString(char* text);
void AddString(string text);
private:
char * StringToCharPointer(string value);
vector<char*> *pVector;
}
CPP 文件:
Test::Test()
{
};
Test::~Test()
{
vector<char*>::iterator i;
for ( i = pVector->begin() ; i < pVector->end(); i++ )
{
delete * i;
}
delete pVector;
};
char * Test::StringToCharPointer(string value)
{
char *pChar = new char[value.length()];
strcpy(pChar, value.c_str());
return pChar;
};
Test::AddString(char* text)
{
pVector->push_back(text);
};
Test::AddString(string text)
{
pVector->push_back(StringToCharPointer(text));
};
所以这几乎是我使用的所有方法,但有什么问题?
【问题讨论】:
-
如何将数据放入向量中?看起来那些
char*s 不是使用new分配的。 -
您是在第一个变体的构造函数中创建一个带有“新向量”的向量,并使用有效数据或空指针对其进行初始化吗?
-
虽然我有 vector
向量,但我从未在其上调用构造函数并存储了值,尝试通过以下方式为 pVector 执行此操作:vector vector = new vector ( ); pVector = &vector;虽然不工作.. -
@Deukalion:你能发布一些来自你的编辑的编译吗?
-
这有效:vector
vector1;向量 * pVector = &vector1;但是当我尝试将相同的东西分配给我在类中的类中的指针时,私有块它给了我一个错误。
标签: c++ pointers vector destructor delete-operator