如何在多个文件中声明全局 std::vector 二维数组? C++
How do you declare a global std::vector 2d array across multiple files? c++
我有一个头文件,其中有一个二维数组 extern 声明,还有一个 cpp 文件,其中有数组的实际定义 link 。我想用二维向量替换这个数组,但我的编译器一直告诉我:
'A': redefinition; multiple initialization
这是我的代码
header.h
#ifndef HEADERS_H_DECLARED
#define HEADERS_H_DECLARED
#include <vector>
...
extern std::vector<std::vector<int>> A(10, std::vector<int>(10));
...
#endif
A.cpp
#include "headers.h"
...
std::vector<std::vector<int>> A(10, std::vector<int>(10));
...
然后在我所有其他的 .cpp 文件中使用这个向量。当它是一个数组时一切正常,我认为它与我在多个文件中声明二维向量的语法有关,但我不知道!
像这样:
header.h:
#ifndef HEADERS_H_DECLARED
#define HEADERS_H_DECLARED
#include <vector>
extern std::vector<std::vector<int>> A;
#endif
A.cpp:
#include "header.h"
std::vector<std::vector<int>> A(10, std::vector<int>(10));
确保正确拼写文件名。
我有一个头文件,其中有一个二维数组 extern 声明,还有一个 cpp 文件,其中有数组的实际定义 link 。我想用二维向量替换这个数组,但我的编译器一直告诉我:
'A': redefinition; multiple initialization
这是我的代码
header.h
#ifndef HEADERS_H_DECLARED
#define HEADERS_H_DECLARED
#include <vector>
...
extern std::vector<std::vector<int>> A(10, std::vector<int>(10));
...
#endif
A.cpp
#include "headers.h"
...
std::vector<std::vector<int>> A(10, std::vector<int>(10));
...
然后在我所有其他的 .cpp 文件中使用这个向量。当它是一个数组时一切正常,我认为它与我在多个文件中声明二维向量的语法有关,但我不知道!
像这样:
header.h:
#ifndef HEADERS_H_DECLARED
#define HEADERS_H_DECLARED
#include <vector>
extern std::vector<std::vector<int>> A;
#endif
A.cpp:
#include "header.h"
std::vector<std::vector<int>> A(10, std::vector<int>(10));
确保正确拼写文件名。