2
您可以使用模板來查找數組的長度。使用模板獲取數組的大小和結束地址
template<typename T, size_t N>
size_t arraylen(T(&)[N])
{ return N; }
我想進一步採取這個想法。
struct Foo
{
template< typename T, size_t N >
Foo(/* ??? */) : ptr(?), size(?) { }
char* ptr;
size_t size;
};
int main()
{
Foo foo("test");
const char bar[] = "test2";
Foo foo2(bar);
const char* baz = bar;
Foo foo3(baz); // compiler error.
}
但是,對於我的生活,我無法獲得編譯的語法。我想我缺少的一部分是我不太瞭解T(&)[N]
的含義。
T(&)[N]
是什麼意思?
我該如何允許訪問數組的地址,同時仍然使用模板來獲取數組的大小?
我應該改變標題。在這個問題中,我沒有提到編譯時間。另外我想'baz'示例失敗。 – 2010-11-01 22:53:15