为什么识别不了c++命名空间中的变量?
Data,h中这样写:#pragmaonce#include<glut.h>namespaceGunBarrelData{//声明全局变量externGLintface_...
Data,h中这样写:
#pragma once
#include <glut.h>
namespace GunBarrelData{
//声明全局变量
extern GLint face_indicies[120][6];
extern GLfloat vertices [174][3];
extern GLfloat normals [360][3];
}
Data.cpp中这样写:
#include "Data.h"
================写法1正确,达到预想效果===================
GLint GunBarrelData::face_indicies[120][6] = {……}
GLint GunBarrelData::vertices [174][3] = {……}
GLint GunBarrelData::normals [360][3] = {……}
================写法2错误,报错“无法解析的外部函数”===================
using namespace GunBarrelData;//去掉所有GunBarrelData::,改为using namespace
GLint face_indicies[120][6] = {……}
GLint vertices [174][3] = {……}
GLint normals [360][3] = {……}
为什么写法2和写法1不等价? 展开
#pragma once
#include <glut.h>
namespace GunBarrelData{
//声明全局变量
extern GLint face_indicies[120][6];
extern GLfloat vertices [174][3];
extern GLfloat normals [360][3];
}
Data.cpp中这样写:
#include "Data.h"
================写法1正确,达到预想效果===================
GLint GunBarrelData::face_indicies[120][6] = {……}
GLint GunBarrelData::vertices [174][3] = {……}
GLint GunBarrelData::normals [360][3] = {……}
================写法2错误,报错“无法解析的外部函数”===================
using namespace GunBarrelData;//去掉所有GunBarrelData::,改为using namespace
GLint face_indicies[120][6] = {……}
GLint vertices [174][3] = {……}
GLint normals [360][3] = {……}
为什么写法2和写法1不等价? 展开
1个回答
展开全部
无法解析的外部函数,而你说的差别在全局数组,你错误的原始报告帖出来
追问
就是那个意思吧……别纠结是函数还是变量了。总之就是“无法解析的外部**”
追答
namespace GunBarrelData{
//声明全局变量
extern GLint face_indicies[120][6];
extern GLfloat vertices [174][3];
extern GLfloat normals [360][3];
}
如果不加extern
我测试的结果是没问题,你可以自己建个小工程对这两项测试下,等价的,你的应该是namespace中用的外部引用对于使用using 模式是没用的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询