编译单元(cpp文件(之间不共享静态链接变量。
我是一名学生,正在尝试构建一个项目。我的程序在访问矢量时抛出错误。向量的大小是1,但当我调用RenderQueue.front时,它会抛出一个错误:
front((在空向量上调用。
我的代码如下:
global.h
struct RenderStruct {
std::function<void()> testfunction1;
std::function<void()> testfunction2;
};
static std::vector<RenderStruct> RenderQueue;
测试.h
class test
{
public:
static void add_to_queue();
};
测试.cpp
void test::add_to_queue()
{
std::function<void()> testfunction1 = [&]()
{
std::cout << "First Function Working" << std::endl;
};
std::function<void()> testfunction2 = [&]()
{
std::cout << "Second Function Working" << std::endl;
};
RenderQueue.push_back({testfunction1, testfunction2});
};
主要.cpp
int main()
{
test::add_to_queue();
auto front = RenderQueue.front();
front.testfunction();
front.testfunction2();
};
使您的变量非静态,将其标记为extern,然后从一个cpp文件中导出(通过在那里声明不带extern(。