找到一个或多个多重定义的符号

  1. a.h中,有函数实现
int a;
vector<double> query(CString str, int index)
{
.....
}
  1. b.cpp中
#include "a.h"
...
  1. c.cpp中
#include "a.h"
...

注:这种情况下引起的“找到一个或多个多重定义的符号”,是因为多个源文件内不能有同名的全局标识,所以不能在头文件内定义全局变量和函数。
第一种解决方法:只能定义为静态变量static和内联函数inline,因为它们不是全局的——除非这个头文件只被一个源文件包含。
1.1. a.h中,有函数实现

static\inline int a;
static\inline vector<double> query(CString str, int index)
{
.....
}

第二种解决方法:
2.1. a.h中,仅有定义

int a;
vector<double> query(CString str, int index)

2.2. a.cpp 中,有实现

#include "stdafx.h"//本来就有定义的
#include "a.h"
int a;
vector<double> query(CString str, int index)

2.3. b.cpp 中

#include "a.h"
...

2.4. c.cpp 中

#include "a.h"
...

你可能感兴趣的:(c++技术,找到一个或多个多重定,全局变量,函数)