Конструктор класса

240
15 декабря 2016, 16:16

Доброго времени суток.

Скажите, как можно организовать конструктор, который бы инициализировал поля указателя класса и можно ли вообще такое вытворять? ) Вопрос для собственного развития. )

class List{
    private:
        int *pnumber;
        char *pIDE;
        char * padress;
    public:
        List(){}//какое-то тело
};

Хочу в main()-е при создании объекта внести данные. Например:

int main(){
    List P(1111,"asdf","fgh");
    return 0; 
}
Answer 1

А кто мешает? Никто. Нужно только объявить конструктор с тремя параметрами и все правильно скопировать. Также раз в конструкторе решили работать с ручным выделением памяти, неплохо и освобождать память в деструкторе (чтобы не было утечек).

Я также добавил метод print, который выводит значения (для контроля).

Но этот подход плохой. Он не плюсовый, это подход чистого си. Если просто не побаловаться и разобраться - то нормально. Если же для нормального кода - используйте тип std::string - он сложность работы.

#include <iostream>
#include <cstring>
using namespace std;
class List{
    private:
        int *pnumber;
        char *pIDE;
        char * padress;
    public:
        List(){}//какое-то тело
        List(int number, const char* IDE, const char * address) {
            pnumber = new int;
            *pnumber = number;
            pIDE = new char[strlen(IDE)+1];
            strcpy(pIDE, IDE);
            padress = new char[strlen(address)+1];
            strcpy(padress, address);
        }
        ~List() {
            delete pnumber;
            delete[] pIDE;
            delete[] padress;
        }
        void print() {
            cout << *pnumber << endl;
            cout << pIDE << endl;
            cout << padress << endl;
        }
    };
 int main(){
     List P(1111,"asdf","fgh");
     P.print();
    return 0; 
}
READ ALSO
Считывание строки

Считывание строки

На вход подается описание бинарного дереваНа листьях (висячих вершинах) этого дерева написаны целые числа (от -10^6 до 10^6)

306
Проблема с наследованием C++, среда Borland Builder 6.0

Проблема с наследованием C++, среда Borland Builder 6.0

Есть такая проблема: имеется иерархия классовВ производных появляются новые методы

267
Строки и слова

Строки и слова

Программа должна выводить, сколько раз каждое слово встречается в строке, но этого не происходитВот код:

227
Как уменьшить размер изображения в Qt?

Как уменьшить размер изображения в Qt?

Как реализовать программу, которая бы получала на вход изображение, изменяла его, а потом сохраняла новый вариант куда-нибудь в другое место?

371