相关疑难解决方法(0)

静态数组类变量"多重定义"C++

我正在编写一些代码,我需要一个类变量,它是一个静态int数组.我明白我可以在头文件中用这样的东西做这个,啊:

#ifndef A_H_
#define A_H_

class A
{
public:
  static const int a[];
};

const int A::a[] = {1,2};

#endif
Run Code Online (Sandbox Code Playgroud)

如果我将此标题只包含在另一个文件中,如下所示,main.cpp:

#include "A.h"

#include <iostream>
using namespace std;

int main()
{

  A myA;  
  cout << "0: " << myA.a[0] << endl;
  cout << "1: " << myA.a[1] << endl;
}
Run Code Online (Sandbox Code Playgroud)

但是假设我需要我的A类有点复杂,我想要一个A.cpp文件.我将保持我的main.cpp文件相同,但然后更改如下(我刚刚添加了一个函数,printA):

#ifndef A_H_
#define A_H_

class A
{
public:
  void printA() const;
  static const int a[];
};

const int A::a[] = {1,2};

#endif
Run Code Online (Sandbox Code Playgroud)

然后在文件A.cpp中:

#include "A.h"

#include <iostream>
using namespace …
Run Code Online (Sandbox Code Playgroud)

c++ static-members multiple-definition-error static-array

6
推荐指数
2
解决办法
6404
查看次数