【发布时间】:2023-04-07 07:41:02
【问题描述】:
我不知道如何从模板化类访问枚举类枚举器,无论是作为返回值还是仅作为值。正如您在以下示例中看到的那样,我完全一无所知。我用谷歌搜索了错误消息,但没有运气。
很高兴您指出正确的语法。
首先这些是错误:
$ g++ -Wall -std=c++11 -o main.out main.cpp
main.cpp:25:1: 错误:在“C::Values”之前需要“typename”,因为“C”是一个依赖范围
C::Values C::Get() // 错误:'template class C' used without template parameters
C::Values 值; //
^
$
这是完整的示例,因此可以对其进行测试:
template<int Val>
class C
{
public:
enum class Values{ one, two };
C();
Values Get();
private:
int val;
};
template<int Val>
C<Val>::C() : val{ Val } {}
template<int Val>
C<Val>::Values C<Val>::Get() // <-- Error here ...
{
return Values::one;
}
int main(void)
{
C<5> aVariable;
C::Values values; // <-- ... and here
return 0;
}
感谢您的提前!!
【问题讨论】: