Инициализация указателя из класса, из другого типа класса, C ++ - PullRequest
0 голосов
/ 06 марта 2019

Я делаю задание для своего класса ООП C ++. В настоящее время я борюсь с инициализацией указателя. Направления для моего назначения из этой части состояния:

Определите класс с именем FracList с закрытыми членами fracPtr, указателем Fraction и размером для хранения размера массива объектов Fraction.

Мой текущий код, который приносит ошибки, выглядит следующим образом. Примечание Fraction - это другой класс.

в FracList.h

private:
    Fraction *fracPtr;
    int size;

в FracList.cpp

void FracList::set_ptr(int* p)
{
    fracPtr = p;
}

Fraction *FracList::get_ptr()
{
    return fracPtr;
}

// Default Constructor

FracList::FracList(int s) : size(s)
{
    if (size > 0)
        fracPtr = new Fraction[size];
    else
        fracPtr = NULL;
}

Как правильно инициализировать переменную-указатель Fraction* fracPtr?

1 Ответ

1 голос
/ 06 марта 2019

Итак, вы, вероятно, имели в виду следующее:

class Fraction{
public:
     Fraction(){}
};

class FracList{
private:
    Fraction *fracPtr;
    int size;
 public:
     Fraction* get_ptr();
    FracList(int s);
    void set_ptr(Fraction* p);
};



void FracList::set_ptr(Fraction* p)
{
    fracPtr = p;
    cout<<"The address of p is:"<< p <<endl;
}

Fraction *FracList::get_ptr()
{
    return fracPtr;
}
int main ()
{
    FracList f1(3);
    Fraction* p=new Fraction;
    f1.set_ptr(p);
    cout<<"the address of p is still:" << p << endl;
}

Все, что вам нужно сделать, - это понять, как инициализировать указатель.Fraction *fracPtr = p; Это правильный способ сделать это, и параметр, который вы должны передать этой функции, не является int, это должен быть указатель на Fraction, потому что вы хотите дать вашему элементу данных адрес, на который он будет указывать,Концепция похожа на указатели в c: Концепция инициализации указателя в c

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