更改命名空间中的变量

Changing variables in namespaces

我想在命名空间内声明一个数组,然后从另一个文件定义它,然后从第三个文件定义后访问它。谁能帮我?顺便说一句,我愿意使用 int[]std::array.

//name.h
#pragma once
namespace Info {
    int arr[2];
    array<int, 2> arra;
}


//file1.cpp
#include "name.h"
using namespace Info;

arr = {10, 9}
arra = {10, 9}

//main.cpp
#include "name.h"
#include <iostream>
int main() {
    cout<<arr[0]<<endl;
}

代码可能如下所示

// header file
namespace Info
{
     extern int arr[2];
}

// file1.cpp
namespace Info
{
     int arr[2] = { 2, 3 };
}

前缀 extern 关键字使其成为不是定义的声明(不允许有多个定义)。

如果您同意在头文件中包含初始化程序,则代码可以简化为(C++17 起):

// header file
namespace Info
{
    inline int arr[2] = { 2, 3 };
}

并且不需要其他定义。 std::array 版本的工作方式相同。