Последние несколько лет я был избалован кодированием на C #, и теперь я вернулся на C ++ и обнаружил, что у меня проблемы с вещами, которые должны быть простыми.Я использую стороннюю библиотеку для gamedev под названием DarkGDK (любые команды с префиксом db), однако DGDK не проблема.
Вот мой код:
System.h
#pragma once
#include <string>
#include <map>
#include "DarkGDK.h"
using namespace std;
class System
{
public:
System();
~System();
void Initialize();
static void LoadImage(string fileName, string id);
static int GetImage(string id);
private:
map<string, int> m_images;
};
System.cpp
#include "System.h"
System::System()
{
}
System::~System()
{
}
void System::Initialize()
{
dbSetDisplayMode (1024, 640, 32);
dbSetWindowTitle ("the Laboratory");
dbSetWindowPosition(100, 10);
dbSyncOn ();
dbSyncRate (60);
dbRandomize(dbTimer());
}
void System::LoadImage(string fileName, string id)
{
int i = 1;
while (dbImageExist(i))
{
i++;
}
dbLoadImage(const_cast<char*>(fileName.c_str()), i, 1);
m_images[id] = i;
}
int System::GetImage(string id)
{
return m_images[id];
}
Идея состоит в том, чтобы иметь карту, которая отображает строки на целочисленные значения, чтобы получить доступ к изображениям со строкой вместо жестко закодированных значений.Этот класс не сделан, поэтому он не обрабатывает ничего, как выгрузка изображений.Я хочу получить доступ к методам изображения, не передавая экземпляр System, поэтому я использовал static.
Теперь я получаю эту ошибку:
blahblah \ system.cpp (39): ошибкаC2677: бинарный '[': глобальный оператор не найден, который принимает тип 'std :: string' (или нет приемлемого преобразования)
Если я изменяю карту на статическую, я получаю эту ошибку компоновщика:
1> System.obj: ошибка LNK2001: неразрешенный внешний символ "private: статический класс std :: map, класс std :: allocator>, int, struct std :: less, класс std:: allocator>>, класс std :: allocator, класс std :: allocator> const, int>>> System :: m_images "(? m_images @ System @@ 0V? $ map @ V? $ basic_string @ DU? $ char_traits @D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@ HU? $ меньше @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@@ 2 @ V? $ распределитель @ U? $ @ пара $$ ОЦК? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@ H @ станд @@@2 @@ std @@ A)
Может ли кто-нибудь из вас, яркие парни, помочь мне?