【发布时间】:2012-05-16 15:34:17
【问题描述】:
我想做以下事情:-
#include <iostream>
template <typename I>
class A {
public:
I member_;
void f() {}
void g() {}
typedef void (A::*fptr) ();
static const fptr arr[];
};
template <typename I>
A<I>::fptr A<I>::arr[] = {
&A<I>::f,
&A<I>::g
};
我该怎么做? 我收到以下错误:-
g++ memeber_func_ptr_array.cpp
memeber_func_ptr_array.cpp:14:1: error: need ‘typename’ before ‘A<I>::fptr’ because ‘A<I>’ is a dependent scope
memeber_func_ptr_array.cpp:17:2: error: expected unqualified-id before ‘;’ token
【问题讨论】:
-
您是否尝试在
A<I>::fptr之前添加typename? -
实际上阅读错误信息确实经常帮助...
-
我尝试添加 typename 并得到了一些不同的(甚至更令人困惑的错误消息)。诀窍是添加 const typename 而不仅仅是 typename。
-
@owagh:读取错误消息是可以迭代多次次的事情。添加
typename,得到一个错误,说你在声明别的东西,阅读错误信息,看看它们有什么不同......
标签: c++ arrays templates static function-pointers