статические члены получают «не является статическим членом класса»

проблема

Я хочу присвоить значения в определении класса, которое находится в отдельном заголовочном файле от объявления класса cpp.

При компиляции получаю сообщения об ошибках:

error: ‘const std::map<unsigned int, std::basic_string<char> > bob::mRegexes’ is not a static member of ‘class bob’const std::map<uint,std::string> bob::mRegexes = {
^
error: ‘const std::map<unsigned int, std::basic_string<char> > bob::mResponses’ is not a  static member of ‘class bob’ const std::map<uint,std::string> bob::mResponses  = {

оба из которых были абсолютно возмутительными, потому что я не понимаю, почему компилятор игнорируетtypedef за std::string Мне кажется, что я что-то здесь упускаю, но я не уверен, почему файл bob.h видит параметры иначе, чем bob.cpp.

bob.h

#ifndef BOB_H
#define BOB_H
#include <iostream>
#include <string>
#include <boost/regex.hpp>
#include <map>typedef unsigned int uint;

// This was first to go when I started having problems.
/*using std::string;*/
using std::map;
// boost::regex > c++11::regex (gcc doesn't follow standards).
using boost::regex;

class bob
{
enum respond_to{
QUESTION,
YELL,
NAME,
DEFAULT,
LENGTH
};

public:
static const respond_to mResponseTypes;
static const map<uint,std::string> mRegexes;
static const map<uint,std::string> mResponses;

static std::string hey(std::string sentence);
static const std::string* evaluate (const std::string& sentence);
static const std::string* getResponse(const std::string& sentence, const respond_to& type) noexcept(true);
};
#endif

bob.cpp

#include "bob.h"
const std::map<uint,std::string> bob::mRegexes = {
{QUESTION, "[a-z]+\\?"},
{YELL,"[A-Z]+"}
};

const std::map<uint,std::string> bob::mResponses  = {
{QUESTION,"Sure"},
{YELL,"Whoah, chill out!"},
{DEFAULT,"Whatever."}
};

// ...

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]