[英]How can I forward declare an array inside a namespace in c++
我一直在嘗試找出如何正確使用命名空間。 我想使用命名空間,但不必在頭文件中定義它。 我不確定如何使用命名空間內的數組來做到這一點。 我要么收到“已定義符號”錯誤,要么被告知名稱空間尚未聲明。
我曾嘗試編寫這樣的代碼:
//Header.h
namespace foo {
int array[5];
}
//Source.cpp
#include "Header.h"
namespace foo {
int array[5] = {0, 1, 2, 3, 4, 5};
}
它返回一個錯誤。
如果我嘗試向前聲明命名空間,就像我對任何其他變量一樣,它表示命名空間未定義,所以我不確定實現這一點的正確方法是什么。
//Header.h
extern int foo::array;
//Source.cpp
#include "Header.h"
namespace foo {
int array[5] = {0, 1, 2, 3, 4, 5};
}
這個
namespace foo {
int array[5];
}
是數組的定義。
另一方面,這個聲明
extern int foo::array;
存在於全局命名空間而不是命名空間foo
。 那是命名空間foo
尚未聲明,您不能使用限定名稱foo::array
。
要在標頭中聲明數組,請使用存儲說明符extern
。
namespace foo {
extern int array[5];
}
然后在cpp文件中你可以寫例如
int foo::array[5] = {0, 1, 2, 3, 4, 5};
與全局命名空間中的方式相同:
// .h
namespace foo {
extern int array[5];
}
// .cpp
namespace foo {
int array[5] = {1, 2, 3, 4, 5};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.