我有一個在頭文件中定義並在源文件中聲明的方法。當我調用該方法時,鏈接器會拋出一個錯誤,指出它找不到錯誤。Linker抱怨找不到現有的方法(C++)
錯誤1個錯誤LNK2019:無法解析的外部符號 「公用:類組塊 * __thiscall世界::的GetChunk(短,短)」 函數_main引用(@的GetChunk世界@@ QAEPAVChunk @@ FF @ Z?)
錯誤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);
它不會編譯/鏈接與上面提到的錯誤消息。
我不太瞭解,它是在頭文件中定義。 –
@Binero:你已經顯示的代碼,在'World.cpp'中定義它,它應該在'World.h'中定義。 –
所以當我做內聯方法時,它們應該在聲明的同一個文件中定義? :O –