cont = cont;
我不知道如何将cont转换为cont类型的指针。
如果我这样做:this-> cont =(char *)cont;
在解构函数中,我有异常错误。
那么将const char转换为char *是否很好,或者我需要做得更好(但是如何?)?
而且我必须有动态分配。
#include "pch.h"
#include <iostream>
#include <stdio.h>
using namespace std;
class Matrix {
private:
int x;
char *cont;
public:
Matrix(){
cout << "aa";
}
Matrix(const char *cont) {
this->cont = cont;
}
~Matrix() {
delete cont;
}
};
int main()
{
Matrix("__TEXT__");
system("pause");
return 0;
}
答案 0 :(得分:1)
this->cont = cont;
是“错误的”,例如,它实际上并未复制数据;这也是为什么delete
在析构函数中失败的原因。您的答案提到“我必须有动态分配。”,所以我想这就是您真正想要的。在这种情况下,只需使用std::string
:
class Matrix {
private:
int x;
std::string cont; // <--- changed type
public:
Matrix(){
cout << "aa";
}
Matrix(const char *cont)
: cont(cont) { // <--- this actually copies
}
};
答案 1 :(得分:0)
首先,您必须使用new为指向char的指针分配空间。 然后在析构函数中分配该空间“ delete [] cont”,而不是“ delete cont”。 但是使用std :: string代替char []
是个不错的选择