Текстовый аргумент C ++ для конструктора - PullRequest
0 голосов
/ 05 декабря 2018

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 голосов
/ 05 декабря 2018
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
    }
};
0 голосов
/ 05 декабря 2018

сначала вы должны выделить место для указателя на символ, используя new.И в деструкторе освободите это пространство «delete [] cont» вместо «delete cont».но будет хорошим выбором использовать std :: string вместо char []

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...