我是C ++的新手,我正试图在翻译程序中使用静态成员变量作为“词典”。
我有两个文件,alphabet.h,看起来像这样:
#ifndef ALPHABET_H
#define ALPHABET_H
#include <map>
#include <vector>
class Alphabet {
public:
typedef std::vector<std::string> letterType;
typedef std::map<std::string, letterType> alphabetType;
alphabetType getAlphabet();
private:
static alphabetType m_alphabet;
};
#endif
和alphabet.cpp,看起来像这样:
#include "alphabet.h"
static Alphabet::alphabetType m_alphabet = {{"ὁ",{"o"}}};
Alphabet::alphabetType Alphabet::getAlphabet() {
return Alphabet::m_alphabet;
}
由于某种原因,当我尝试编译时,我从g ++中收到错误。
在函数Alphabet::getAlphabet[abi:cxx11]()':
alphabet.cpp:6: undefined reference to
Alphabet :: m_alphabet [abi:cxx11]'中
collect2:错误:ld返回1退出状态
我很感激任何洞察我做错了什么。
答案 0 :(得分:4)
static Alphabet::alphabetType m_alphabet = {{"ὁ",{"o"}}};
应该是
Alphabet::alphabetType Alphabet::m_alphabet = {{"ὁ",{"o"}}};
在这里,您可以定义另一个变量。