【问题标题】:What is meant by 'data variable'?“数据变量”是什么意思?
【发布时间】:2014-11-03 16:39:20
【问题描述】:

在此错误中,MSVS2010 中的“数据变量”是什么意思?我以为我在声明一个在我的代码中其他地方定义的符号。

错误 C2365:“g_surf”:重新定义;之前的定义是“数据变量”

显然这可能意味着 int 或 char。
我遵循了一个工作示例。
在声明符号之前,我必须包含类的定义。

#include classdef.h

我使用 extern 关键字在 stdafx.h 中声明一个对象。

extern COriginal g_orig;//works
extern CClass g_surf;//how is this declaration resulting in a 'data variable'  type?

我在代码文件中(在全局空间中)实例化一个类。这就是发生错误的地方。

COriginal g_orig(CONST_ARGUMENT);//works
CClass g_surf();//seen as redefinition.

我从其他两个类创建了一个类,因为我需要这两个类的属性。

我可以找到其他无法提供对此问题的见解的重新定义问题。我没有在 MSVS2010 或网络上找到“数据变量”的含义。

【问题讨论】:

  • “数据变量”组中还有什么?它是在某处定义的吗?还是我只记得当部分未定义时错误语句的含义?

标签: c++ visual-studio-2010 class redefinition


【解决方案1】:

您可能打算调用不带参数的构造函数。

CClass g_surf;

对于你的编译器,这一行

CClass g_surf();

是一个名为 g_surf 的方法的前向声明,不带参数并返回一个 CClass。

【讨论】:

  • 现在看起来有点傻,因为我需要知道数据变量的含义,而不是专注于整个重新定义部分。
  • 嗯,“你可能的意思”是猜测。但是您的编译器不会猜测您的意思,它只会告诉您出了什么问题:)
  • 这似乎不是针对我的问题,但它确实解决了问题。另一个问题,编译器错误消息,本身就是一团糟。
【解决方案2】:

“数据变量”似乎确实包含用类类型声明的符号。
因此,我试图将符号的类型重新定义为其他类型。
我试图使用相同的符号来声明一个函数。

我在代码中犯的错误是在实例化类时在符号名称上添加括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2018-08-18
    • 2012-10-12
    • 2012-07-20
    相关资源
    最近更新 更多