У меня есть следующий код:
#include <vector>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#include <tchar.h>
class TList {
private:
std::vector<const char*> elementos;
int position;
TList(std::vector<const char*> elementos);
public:
TList(const char** e, int s);
TList *GetReverseList();
int Size();
const char *Next();
};
TList::TList(const char** e, int s) {
std::vector<const char*> res (&e[0], &e[s]);
elementos = res;
position = 0;
}
TList::TList(std::vector<const char *> elements) {
std::vector<const char*> res = std::vector<const char*>();
int size = elements.size();
for (int i = 0; i < size; i++) {
res.push_back(elements.at(i));
}
elementos = res;
position = 0;
}
//Create a new TList with the reverse list of elements
TList *TList::GetReverseList() {
TList *res = new TList(elementos);
std::reverse(res->elementos.begin(), res->elementos.end());
return res;
}
int TList::Size() {
return elementos.size();
}
//Use the position to get the next char *
const char * TList::Next() {
const char * res;
if (elementos.empty()) {
res = NULL;
}
else {
int pos = position;
int size = elementos.size();
res = pos == size ? elementos.at(position - 1) : elementos.at(position);
if (pos < size) {
position++;
}
}
return res;
}
int main()
{
int size = 2;
const char *arr[2] = {"Hola", "AAAA"};
TList *list = new TList(arr, size);
TList *listReverse = list->GetReverseList();
printf("Size: %u \n", listReverse->Size());
printf("First value: %s \n", listReverse->Next());
printf("Second value: %s \n", listReverse->Next());
delete list;
delete listReverse;
return 0;
}
Когда я запускаю его в Visual Studio, он говорит в консоли
Size: 2
First Value: AAAA
Second Value: Hola
и выдает исключение «ucrtbased.pdb notloaded». «Ucrtbased.pdb содержит отладочную информацию, необходимую для поиска источника для модуля ucrtbased.dll», вот изображение:
![enter image description here](https://i.stack.imgur.com/Bg45R.png)
, а также открыть это окно:
![enter image description here](https://i.stack.imgur.com/4diXI.png)
все эти исключения вызываются при попытке удалить listReverse, вот еще один захват стека вызовов (игнорируйте дополнительные переменные, такие как listCopy):
![enter image description here](https://i.stack.imgur.com/EytIi.png)
Я хочу создать новый TList как можно более оптимизированным, но с его обращенными элементами я не хочу создавать конструктор копирования, потому что он мне нужен как функция "GetReverseList", так что я могу сделать?