gpt4 book ai didi

c++ - 在Visual Studio中使用枚举的编译错误

转载 作者:行者123 更新时间:2023-12-02 09:49:35 31 4
gpt4 key购买 nike

我在类中定义了这个enum:

enum MenuNavigation : int {
FileMenu,
AutoAssign,
EditMenu,
ViewMenu,
OptionsMenu,
HelpMenu
};

当我编译它时,我收到一个编译错误:

5>D:\My Programs\2019\MeetSchedAssist\Meeting Schedule Assistant\CreateReportDlg.h(360,7):
error C2365: 'CCreateReportDlg::AutoAssign': redefinition; previous definition was 'enumerator'

5>D:\My Programs\2019\MeetSchedAssist\Meeting Schedule Assistant\CreateReportDlg.h(190):
message : see declaration of 'CCreateReportDlg::AutoAssign'


在第360行上,我有一个函数声明:
BOOL AutoAssign(UINT uNumToFill, 
UINT uStartIndex,
CStringArray &rAryStrAllBrothers, ROW_DATA_S &rsRowData, int iGridColumn);

如果我将枚举器项重命名为 AutoAssignmentskAutoAssign,则会进行编译。

我不明白为什么我理解的范围内的 enum值不能与父类中定义的函数具有相同的名称?

最佳答案

I don't understand why a enum value which I understood has scope can't have the same name as a function defined in the parent class?



这不是真的。成员名称相同的 enum会发生冲突。

相反,您应该使用 scoped enumerations,例如:
enum class MenuNavigation : int {
FileMenu,
AutoAssign,
EditMenu,
ViewMenu,
OptionsMenu,
HelpMenu
};

然后 MenuNavigation::AutoAssign

您应该对 CCreateReportDlg做同样的事情,然后 CCreateReportDlg::AutoAssignMenuNavigation::AutoAssign永远不会冲突。

关于c++ - 在Visual Studio中使用枚举的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61308274/

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