1

ヘッダー ファイルで定義され、ソース ファイルで宣言されたメソッドがあります。メソッドを呼び出すと、リンカーはエラーが見つからないというエラーをスローします。

エラー 1 エラー LNK2019: 未解決の外部シンボル "public: class Chunk * __thiscall World::getChunk(short,short)" (?getChunk@World@@QAEPAVChunk@@FF@Z) 関数 _main で参照

エラー 2 エラー LNK1120: 1 つの未解決の外部

World.h:

#pragma once
#include <map>
#include <vector>
#include "Chunk.h"

class World {
public:
    World();
    ~World();
    void generateChunk(short x, short z);
    inline Chunk* getChunk(short x, short z);
private:
    std::vector< std::vector<Chunk*> > loadedChunks;
};

World.cpp:

#include "World.h"
#include <iostream>

World::World() : loadedChunks(1, std::vector<Chunk*>(1)) {}

World::~World() {
    for(unsigned short x = loadedChunks.size(); x > 0; --x)
        for(unsigned short z = loadedChunks[x].size(); z > 0; --z) {
            std::cout << "Destructed" << std::endl;
            delete loadedChunks[x][z];
        }
}

void World::generateChunk(short x, short z) {
    Chunk chunk(x, z);
    delete loadedChunks[x][z];
    chunk.generate();
    loadedChunks[x][z] = &chunk;
}

Chunk* World::getChunk(short x, short z) {
    return loadedChunks[x][z];
}

後で実行すると:

World world;
world.generateChunk(0, 0);
world.getChunk(0, 0);

上記のエラー メッセージではコンパイル/リンクされません。

4

3 に答える 3