У меня есть метод глубокой копии в пользовательском контейнере myCont
. У меня есть экземпляр несортированного контейнера, который мне нужно сортировать и сбрасывать. Я создаю контейнер temp с отсортированным флагом, вызовите метод копирования и Dump. Но приведенный ниже код приложения создает пустой контейнер и передает его, а не мой (загруженный) контейнер. Нужна помощь в выяснении того, что здесь происходит. Заранее спасибоC++: Почему здесь вызван конструктор
void myCont::Copy(const myCont& srcCont)
{
// code to deep copy from srcCont
}
App Код:
fn(x, z, z) {
myCont dC();
dC.setSorted(true);
dC.Copy(sC);
dC.DumpCont();
}
Монтаж:
myCont dC();
0000000140323068 mov dl,1
000000014032306A lea rcx,[dC]
0000000140323072 call myCont::myCont (0141E1A01Ah)
0000000140323077 nop
dSet.Copy(sC);
0000000140323078 cmp qword ptr [sC],0
0000000140323081 je CR::evaluate+6FDh (014032308Dh)
0000000140323083 mov byte ptr [rsp+0C2h],1
000000014032308B jmp CR::evaluate+705h (0140323095h)
000000014032308D mov byte ptr [rsp+0C2h],0
0000000140323095 movzx edx,byte ptr [rsp+0C2h]
000000014032309D lea rcx,[rsp+6F0h]
00000001403230A5 call myCont::myCont (0141E1A01Ah) <-WHY THIS CTROL CALL ????????????
00000001403230AA nop
00000001403230AB lea rdx,[rsp+6F0h]
00000001403230B3 lea rcx,[dC]
00000001403230BB call myCont::Copy (0141E1A188h)
00000001403230C0 nop
00000001403230C1 lea rcx,[rsp+6F0h]
00000001403230C9 call myCont::~my Cont(0140009280h)
dC.DumpCont();
00000001403230CE lea rcx,[dC]
00000001403230D6 call myCont::DumpCont(014019B240h)
Да, sC является указателем на экземпляр myCont. – user1409254
Тогда вам, вероятно, нужен dC.Copy (* sC); И, если вы хотите, чтобы компилятор помог, поставьте «явный» перед тем, что разрешает вам конвертировать из bool в myCont. Я предполагаю, что у вас есть конструктор «myCont (bool x)», который может быть «явным myCont (bool x)». (Просто догадаться ...) –
Вот и все! Большое спасибо. Да, есть конструктор с myCont (bool). – user1409254