无法引用私有静态成员变量:编译器错误

时间:2016-08-04 17:15:13

标签: c++

我是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退出状态

我很感激任何洞察我做错了什么。

1 个答案:

答案 0 :(得分:4)

static Alphabet::alphabetType m_alphabet = {{"ὁ",{"o"}}};

应该是

Alphabet::alphabetType Alphabet::m_alphabet = {{"ὁ",{"o"}}};

在这里,您可以定义另一个变量。