C++中的Const过程,Visual Studio C++2010中的奇怪错误
Const procedure in C++, weird error in Visual Studio C++ 2010?
class a{
public:
int b;
static int c;
virtual void mod() const
{
c=4;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
a bi;
return 0;
}
看看这个。。。在使用Visual Studio C++2010编译器编译它之后,我得到了。。。
cpplearningconsole.obj:错误LNK2001:未解析的外部符号"public:static int a::c"(?c@a@@2HA(
我想这是一个编译器错误。对我来说,真正的问题是。如果c变量是常量,mod应该能够修改吗?
谢谢。
您刚刚在类定义中声明了静态变量,您需要通过执行int a::c = 0;
在中定义。
这:
cpplearningconsole.obj:错误LNK2001:未解析的外部符号"public:static int a::c"(?c@a@@2HA(
不是编译器消息,而是链接器消息。你得到了它,因为尽管你已经声明了成员c
,但你还没有定义它。静态成员只需要在一个源文件中定义,就可以创建它们。类似于:
int a::c = 0;
至于第二个问题,将函数声明为const
,说明它不修改被调用的对象。mod
函数不修改对象,而是修改静态成员。这就是为什么你不会得到一个编译器错误。
您应该为变量成员添加正确的定义,在类中您只有声明。在您的cpp中或在类声明之后(在类声明之外(添加:
int a::c = 0;
回答您的另一个问题:
c
是您类的公共静态成员任何人都可以更改其值,那么为什么不更改mod()
呢?
相关文章:
- Visual Studio 2013,错误 MSB8020:找不到 Visual Studio 2010 的生成工具
- VisualC++ 2010 有没有办法找出有关未处理异常错误的更多详细信息
- Visual Studio 2010 - C++ 致命错误 LNK1120: 1 个未解析的外部
- 如何解决错误 C2719 在 Visual Studio 2010 C++ 中不存在代码行时
- Qt 4.8 与 Visual Studio 2010 的链接错误
- 是MSVC 2010中的错误还是我做错了什么
- Visual Studio 2010:致命错误C1189:#Error
- 未解决的外部符号Visual Studio 2010错误
- OpenCV 2.4.8 Microsoft Visual C 2010 Express中的代码错误
- 字符串以使用SQLAPI(Visual Studio 2010)时出现错误LNK2019
- 编译错误C3861 Visual Studio 2010
- 生成器 2010 "is not accessible"错误
- 视觉C 2010年致命错误C1083;没有权限
- 尝试使用Visual Studio 2010调试DLL(C )时的错误消息
- 了解Visual Studio 2010中的此错误(LNK 2019)
- 我正在尝试在Visual Studio 2010上编译C ++代码,但出现链接器错误
- 运行 QWT 示例程序 (.pro) 与 Visual Studio 2010 错误
- 在 Visual C++ 2010 中制作提取/编译程序,但有错误
- VS 2010 Qt 加载项中的链接错误
- vb c++ 2010 中的 iostream.h 错误