Loading...
ValentinT avatar ValentinT 4 Точки

C++ Advanced Judge Assignment Task2 - Register of Three

Здравейте,

Това са ми copy конструктора и copy assignment оператора

Register& Register::operator=(const Register& other)
{
    if (this != &other)
    {
        this->companiesArray = other.companiesArray;
        this->numAdded = other.numAdded;
    }
    return *this;
}

Register::Register(const Register& other) : companiesArray(other.companiesArray), numAdded(other.numAdded) {}
 

Програмта ми се чупи и връща Exception thrown: read access violation.
this was 0xBC1ECA00. когато стигне до реда return companyRegister.get(id);  в doRun метода, а това е мястото където отива 

if _ITERATOR_DEBUG_LEVEL == 2
    if (_Myproxy != nullptr)
        {    // proxy allocated, drain it

ред 216 във файла xutility, имате ли представа откъде може да идва тази грешка ? 

Поздрави

 

Тагове:
0
C++ Programming
Jovanna avatar Jovanna 186 Точки

Здравей,

мисля, че се опитваш да копираш полетата директно, което не върши работа тук. Виж тази тема:

възможно ли е директно копиране на полетата при copy-assignment operator=

Иначе, ето моя код:

Register& Register::operator=(const Register& other) {
   Company* newData;
    if (other.numAdded == 0) {
        newData = nullptr;
    }
    else {
        newData = new Company[other.numAdded]{};
    }
    this->numAdded = other.numAdded;
    this->companiesArray = newData;
    for (size_t i = 0; i < other.numAdded; i++) {
        this->companiesArray[i] = other.companiesArray[i];
    }
    return *this;  
}

 

0
ValentinT avatar ValentinT 4 Точки

Здравей,

много е вероятно да си права, дори се сещам сега в презентацията пишеш за правилото на 3-те че полетата се слагат в локални променливи преди да се сетнат this Полетата. Много благодаря

Поздрави

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.