Çözüldü Sandık iç görü sistemini ekliyorum build de hata alıyorum

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

MsCharles

Üye
Üye
Mesaj
41
Çözümler
1
Beğeni
3
Puan
49
Ekran Alıntısı.PNG


hata veren blok:
#include "../../libgame/include/grid.h"
void ITEM_MANAGER::GetChestItemList(const DWORD& dwChestVnum, std::vector<TChestDropInfoTable>& vec_item)
{
    const auto pGroup = GetSpecialItemGroup(dwChestVnum);
    if (!pGroup)
        return;

    std::vector<std::unique_ptr<CGrid>> pGrids;
    pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

    for (int i = 0; i < pGroup->GetGroupSize(); i++)
    {
        const auto itemTable = GetTable(pGroup->GetVnum(i));
        //pass if exp, yang or duplicate item
        if (!itemTable || !itemTable->dwVnum || itemTable->dwVnum < 3 || std::find_if(vec_item.begin(), vec_item.end(), [&pGroup, &i](const TChestDropInfoTable& data) -> bool { return static_cast<DWORD>(pGroup->GetVnum(i)) == data.dwItemVnum; }) != vec_item.end())
            continue;

        bool PushNewGrid = true;
        for (size_t iPage = 0; iPage < pGrids.size(); iPage++)
        {
            const auto iPos = pGrids.at(iPage)->FindBlank(1, itemTable->bSize);
            if (iPos >= 0)
            {
                pGrids.at(iPage)->Put(iPos, 1, itemTable->bSize);
                vec_item.push_back({ static_cast<BYTE>(iPage+1), static_cast<BYTE>(iPos), static_cast<DWORD>(pGroup->GetVnum(i)), static_cast<BYTE>(pGroup->GetCount(i)) });
                PushNewGrid = false;
                break;
            }
        }

        if (PushNewGrid)
        {
            pGrids.emplace_back(std::make_unique<CGrid>(5, 8));
            i--;//again
        }

    }
    //sort by itemvnum..
    std::sort(vec_item.begin(), vec_item.end(), [](const TChestDropInfoTable& a, const TChestDropInfoTable& b) { return a.dwItemVnum < b.dwItemVnum; });
}
 
Çözüm
C++:
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Bunu şu şekilde değiştirmeyi dene veya auto_ptr de deneyebilirsin
C++:
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8)));
2 Kez
Arat:
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Değiştir:
pGrids.emplace_back(CGrid(15, 8));

Emin değilim ama böyle deneyebilir misin?
 
2 Kez
Arat:
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Değiştir:
pGrids.emplace_back(CGrid(15, 8));

Emin değilim ama böyle deneyebilir misin?
malesef olmadı

şu iki satırda hata veriyor

1 bu:
    pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

2 bu:
        if (PushNewGrid)
        {
            pGrids.emplace_back(std::make_unique<CGrid>(5, 8));
            i--;//again
        }
 
Source dosyanda ne kadar aşağıdaki kod var ise bu şekilde değiştirir misin?
NotePad++ kullanıyorsundur büyük ihtimal aç CTRL + F yap ve dosyalarda bul bölümüne gel Dizin kısmına source dosyanın olduğu dizini kopyala
Aranan tarafa değiştirilecek kodu, Değiştir kısmına da değiştir kısmındaki kodu yazıp tümünü değiştir yap

Arat
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Değiştir
pGrids.emplace_back(CGrid(5, 8));
 
Source dosyanda ne kadar aşağıdaki kod var ise bu şekilde değiştirir misin?
NotePad++ kullanıyorsundur büyük ihtimal aç CTRL + F yap ve dosyalarda bul bölümüne gel Dizin kısmına source dosyanın olduğu dizini kopyala
Aranan tarafa değiştirilecek kodu, Değiştir kısmına da değiştir kısmındaki kodu yazıp tümünü değiştir yap

Arat
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Değiştir
pGrids.emplace_back(CGrid(5, 8));
malesef yine olmadı @Whistle bir fikriniz var mı?
 
C++:
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Bunu şu şekilde değiştirmeyi dene veya auto_ptr de deneyebilirsin
C++:
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8)));
 
En son bir moderatör tarafından düzenlenmiş:
Çözüm
C++:
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Bunu şu şekilde değiştirmeyi dene veya auto_ptr de deneyebilirsin
C++:
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8));
Bu sorununuzu çözücektir büyük ihtimal. Fakat make_unique c++14 ve c++20 destekli bir fonksiyon. Tavsiyem source'ünüzü güncel versiyona taşımanızdır.
 
C++:
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Bunu şu şekilde değiştirmeyi dene veya auto_ptr de deneyebilirsin
C++:
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8));
Ekran Alıntısı.PNG

Bu sorununuzu çözücektir büyük ihtimal. Fakat make_unique c++14 ve c++20 destekli bir fonksiyon. Tavsiyem source'ünüzü güncel versiyona taşımanızdır.
files Whistle nin paylaştığı dosyaları kullanıyorum g++9
 
Bu şekilde olacak bir parantez eksik diyor

C++:
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8)));
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst