【发布时间】:2020-11-16 22:49:18
【问题描述】:
我有一个类如下,
template<size_t N>
class A
{
typedef int(*ARRAY)[N];
array getArray();
ARRAY array;
};
那我该如何在定义中使用ARRAY这个类型呢?这个我试过了
template<size_t N>
ARRAY A<N>::getArray()
{
return array;
}
但是,它告诉我 ARRAY 没有定义。
【问题讨论】:
-
@JesperJuhl:
typedef int (*ARRAY)[N]; -
@BillLynch 被命名为
A<N>::ARRAY,正如您从您的回复中所知道的那样。 -
@Blindy:说他们没有定义
ARRAY感觉有点小气,如果真正的意思是你没有为ARRAY提供正确的范围访问器。 -
ARRAY A<N>::getArray()在您说函数是A<N>的成员之前,您希望编译器如何知道ARRAY的定义位置?它只是从左到右读取。您可以使用尾随返回类型来避免重复:auto A<N>::getArray() -> ARRAY。但请不要将ALL_CAPS用于除宏之外的任何内容,也不要使用宏。
标签: c++ arrays c++11 templates class-template