构造函数的C ++文本参数

时间:2018-12-05 11:50:23

标签: c++ pointers

  

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;
}

2 个答案:

答案 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 []

是个不错的选择