【发布时间】:2021-10-19 08:51:18
【问题描述】:
我需要从d.cpp 访问c.cpp 中的m[]。数组m[] 是命名空间内CD 的成员,并在该类内的c.h 中声明。所以我在文件c.h 的同一类CD 中声明了一个静态数组s[]。在c.cpp中实例化它,并使用一个函数将原始数组m[]的元素复制到静态数组s[]。然后,我在需要访问它的d.cpp 中#include "c.h"。
c.h
namespace k{
class CD {
string m[10];
static string s[10];
}}
c.cpp
#include "c.h"
namespace k{
string CD::s[10] = {"q"}
}
d.cpp
#include "c.h"
void func(){
string n = k::CD::s[0];
}
但我收到一条错误消息,提示未定义对 k::CD::s 的引用。
我在这里做错了吗?还是有其他方法可以做到这一点?
【问题讨论】:
-
使用您显示的代码,您应该会遇到更多错误。请了解如何创建minimal reproducible example。也请花一些时间阅读the help pages,阅读SO tour,阅读How to Ask,以及this question checklist。最后请学习如何edit您的问题以改进它们。
-
哦,还请告诉我们您是如何构建该程序的。如果您在终端中执行此操作,请向我们展示您使用的确切命令。如果您使用 IDE,请告诉我们您是如何设置项目的,以及哪些文件被列为项目的一部分。如果有任何文本构建输出,则将其复制粘贴到问题中。
-
#include c.h=>#include "c.h" -
"所以我在文件
CD的同一类中声明了一个静态数组s[]c.h" - 你让它听起来像你这样做是为了得到访问m- 但单个实例s和所有m:s 未连接。如果我的回答不能解决您的问题,请澄清您的问题。
标签: c++ arrays static global-variables