gpt4 book ai didi

c++ - LNK 2001 : unresolved external symbol while initializing static member

转载 作者:行者123 更新时间:2023-11-28 02:03:18 25 4
gpt4 key购买 nike

我正在尝试实现一个虚拟键盘类,因为我有不同的键盘布局,如图所示。

键盘.hpp

 class CKeyBoard 
{
public:

enum eKeyBoardLayout
{
UPPER_CASE_ALPHABETS,
LOWER_CASE_ALPHABETS,
UPPER_CASE_NUMBERS,
LOWER_CASE_NUMBERS,
MAX_KEYBOARDLAYOUTS,
};
CKeyBoard();
void hideCharacters(bool hide); // for password
void setDisplayBufferLength(UNSIGNED8_T maxCharToDisplay);
virtual ~CKeyBoard();
static const UNSIGNED8_T const_noOfRows = 0x03; // 3 rows for character keys
struct SLayout
{
UNSIGNED8_T noOfColumns[const_noOfRows]; ///< noofcolumns in each row may be different
TypedText textAreaFont;
const KeyMapping* pKeyMapping;
};
static const SLayout m_KeyBoardLayouts[MAX_KEYBOARDLAYOUTS];
private:
/*methods*/
void setKeyBoardLayout(eKeyBoardLayout);
void backspacePressedHndlr();
void letterCasePressedHndlr();
void alphabetNumberToggleHndlr();
/*members*/
static const UNSIGNED8_T const_maxNoOfKeysSupprtd = 26;
CKey m_keyArray[const_maxNoOfKeysSupprtd];
CMenuItem m_KeySpaceBar;
CMenuToggle m_KeyCaseSwitch;
CMenuToggle m_KeyAlphaNum;
CMenuItem m_keyBackSpace;
eKeyBoardLayout m_eCurrentKeyLayout;
CKeyBoardDisplayArea m_DisplayArea;

};

我正在 cpp 文件中初始化静态成员,如下所示。键盘.cpp

static const CKeyBoard::SLayout   m_KeyBoardLayouts[CKeyBoard::MAX_KEYBOARDLAYOUTS] = \
{
// UPPER_CASE_ALPHABETS,
{
{ 10, 9, 7 },
TypedText(T_KEYBOARD),
&keyMappingsAlphaUpper[0],

},
// LOWER_CASE_ALPHABETS,
{
{ 10, 9, 7 },
TypedText(T_KEYBOARD),
&keyMappingsAlphaLower[0],
},
// UPPER_CASE_NUMBERS,
{
{ 10, 10, 5 },
TypedText(T_KEYBOARD),
&keyMappingsNumLower[0],
},
// LOWER_CASE_NUMBERS,
{
{ 10, 10, 5 },
TypedText(T_KEYBOARD),
&keyMappingsNumLower[0]
},


};
// Other function definitions
CKey::CKey() : m_pCallback(NULL)
{
}

但我仍然收到未解析的外部符号作为链接器错误。我在这里做错了什么?

错误详情:*error LNK2001: 未解析的外部符号“public: static struct CKeyBoard::SLayout const * const CKeyBoard::m_KeyBoardLayouts” (?m_KeyBoardLayouts@CKeyBoard@@2QBUSLayout@1@B)*

最佳答案

您忘记添加类范围:

static const CKeyBoard::SLayout   
CKeyBoard::m_KeyBoardLayouts[CKeyBoard::MAX_KEYBOARDLAYOUTS]

遗憾的是编译器没有像那样警告静态链接......这是一个常见的错误。

关于c++ - LNK 2001 : unresolved external symbol while initializing static member,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38518721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com