1
我只想了解編譯器爲什麼會給出這個錯誤以及需要更改哪些內容?我只是在玩C++ 11代碼。爲什麼限定名稱錯誤?
class test
{
public:
template<int N>
bool foo() { return true;}
template<int N, int... Ns>
struct table : table<N-1, N-1,Ns...> {};
template<int... Ns>
struct table<0,Ns...>
{
static constexpr bool(test::table<0,Ns...>::*fns[])() = {foo<Ns>...};
};
// below line gives the error
template<int... Ns>
constexpr bool (*test::table<0,Ns...>::fns[sizeof...(Ns)])();
};
int main()
{
}
的錯誤是:
error: invalid use of qualified-name test::table<0, Ns ...>::fns
這個代碼有很多問題。例如,'foo'是一個「'test :: *'」,而不是「'test :: table <0, Ns...> :: *'」。這些問題中的大部分都與您顯示的錯誤無關。 – chris
你想做什麼?如果通過倒數第二行來聲明'test'的成員函數,則必須給該成員函數一個非限定名稱。 – JohnB
@JohnB,我認爲OP正試圖定義靜態成員'fns'。這個定義不應該在課堂上。 – chris