如何在 C++ 中使用前向声明模板 class 声明模板 class 对象的外部数组?
How to declare an extern array of template class objects with a forward declared template class in C++?
考虑以下现有代码(按预期编译和执行):
/* File foo.h */
extern const struct Foo bar[]; /* Definition in foo.cpp */
struct Foo
{
Foo(int i) : Foo(bar[i]) {}
int x;
};
我现在想将 Foo
更改为模板 class,这样:
template <typename T>
struct Foo
{
Foo(int i) : Foo(bar[i]) {}
T x;
};
我现在需要如何声明 extern const struct Foo bar[]
才能编译代码?
- 首先,前向声明
template <typename T> struct Foo
.
- 然后,使用前向声明的
Foo
声明 bar
。
template <typename T>
struct Foo;
extern const Foo<int> bar[];
template <typename T>
struct Foo
{
Foo(int i) : Foo(bar[i]) {}
T x;
};
考虑以下现有代码(按预期编译和执行):
/* File foo.h */
extern const struct Foo bar[]; /* Definition in foo.cpp */
struct Foo
{
Foo(int i) : Foo(bar[i]) {}
int x;
};
我现在想将 Foo
更改为模板 class,这样:
template <typename T>
struct Foo
{
Foo(int i) : Foo(bar[i]) {}
T x;
};
我现在需要如何声明 extern const struct Foo bar[]
才能编译代码?
- 首先,前向声明
template <typename T> struct Foo
. - 然后,使用前向声明的
Foo
声明bar
。
template <typename T>
struct Foo;
extern const Foo<int> bar[];
template <typename T>
struct Foo
{
Foo(int i) : Foo(bar[i]) {}
T x;
};