下面的代碼有什麼問題? g ++和clang的最新版本都會給出錯誤。我相信我在這裏錯過了一些基本的東西。靜態類成員
#include <iostream>
struct Z
{
static const int mysize = 10;
};
Z f2();
int main()
{
std::cout << f2()::mysize << std::endl;
}
這裏的動機是能夠使用如下代碼使用模板找出數組的大小。我知道有很多方法,但只是偶然發現了這個想法。
template<int N> struct S
{
enum { mysize = N };
};
template<class T, int N> S<N> f(T (&)[N]);
int main()
{
char buf[10];
std::cout << f(buf)::mysize << std::endl;
}
但不是我的表達式與Z :: mysize相同? – Chubsdad
更新了激勵示例 – Chubsdad
@Chubsdad'::'應該在其左側有一個類(結構)或名稱空間,但在您的示例中,它有一個由'f2'返回的類型爲'Z'的對象。使用'.'來引用對象的'mysize'成員。 – Sergey