c – 解析“只能在类中初始化静态const积分数据成员”编译错误
以下用于创建全局对象导致编译错误.
#include "stdafx.h" #include <iostream> using namespace System; using namespace std; #pragma hdrstop class Tester; void input(); class Tester { static int number = 5; public: Tester(){}; ~Tester(){}; void setNumber(int newNumber) { number = newNumber; } int getNumber() { return number; } } Tester testerObject; void main(void) { cout << "Welcome!" << endl; while(1) { input(); } } void input() { int newNumber = 0; cout << "The current number is " << testerObject.getNumber(); cout << "Change number to: "; cin >> newNumber; cout << endl; testerObject.setNumber(newNumber); cout << "The number has been changed to " << testerObject.getNumber() << endl; } 以下是编译错误: 1>------ Build started: Project: test,Configuration: Debug Win32 ------ 1>Compiling... 1>test.cpp 1>.test.cpp(15) : error C2864: 'Tester::number' : only static const integral data members can be initialized within a class 1>.test.cpp(33) : error C2146: syntax error : missing ';' before identifier 'testerObject' 1>.test.cpp(33) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>.test.cpp(49) : error C2039: 'getNumber' : is not a member of 'System::Int32' 1> c:windowsmicrosoft.netframeworkv2.0.50727mscorlib.dll : see declaration of 'System::Int32' 1>.test.cpp(55) : error C2039: 'setNumber' : is not a member of 'System::Int32' 1> c:windowsmicrosoft.netframeworkv2.0.50727mscorlib.dll : see declaration of 'System::Int32' 1>.test.cpp(57) : error C2039: 'getNumber' : is not a member of 'System::Int32' 1> c:windowsmicrosoft.netframeworkv2.0.50727mscorlib.dll : see declaration of 'System::Int32' 1>Build log was saved at "file://c:UsersOwnerDocumentsVisual Studio 2008ProjectstesttestDebugBuildLog.htm" 1>test - 6 error(s),0 warning(s) ========== Build: 0 succeeded,1 failed,0 up-to-date,0 skipped ========== >如何创建全局类 我喜欢在文件范围内声明全局类对象(我喜欢在文件范围内声明所有全局变量),因为当我必须创建单独的源文件并执行“extern”时,它变得非常复杂并且永远不适合我.虽然,我确实想知道如何最终做到这一点……似乎我看到的每个教程都不会编译,除非它编译,我不知道如何重新创建它! 如果我可以让它编译…然后我可以成功地学习如何做到这一点.因此,如果有人可以将上述内容重写为字面上复制的内容.粘贴到Visual C Express 2008并开始工作,我终于能够弄清楚如何重新创建它.看到修复此问题,我感到非常兴奋!只是我无法使Global Objects正常工作!有关声明Global Class Objects的任何其他信息……或者其他任何相关信息都是受欢迎的! 解决方法
只需逐个解决错误.很多错误只是从最初的错误中级联出来,所以当只有一对错误时,看起来有很多问题.从顶部开始:
1>.test.cpp(15) : error C2864: 'Tester::number' : only static const integral data members can be initialized within a class 除非它是static,const和其中一个整数类型,否则不能在类定义中初始化成员.从数字声明中删除“= 5”.那么你需要在类定义之外定义Tester :: number,如下所示: int Tester::number = 5; 问题#2: 1>.test.cpp(33) : error C2146: syntax error : missing ';' before identifier 'testerObject' 几乎完全是它所说的(缺少分号错误在说分号应该在哪里可能有点不精确) – 在定义Tester类之后需要一个分号. 解决这些问题,你的编译问题就会消失. 关键是尝试从顶部一次一个地编译错误.如果你得到超过3个,你可能只是在第3个左右之后忽略所有内容,因为初始错误只会导致编译进入杂草(如果它们是真正的错误,它们将在下一个再次出现无论如何编译). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何使用c#,mvc中的模型值设置内联css宽度
- c# – XDocument Root.Elements()返回null
- ruby-on-rails – 502 Bad Gateway / rails 4 / nginx / pa
- 正则表达式:提取以数字开头,以点结尾的字符串
- ruby-on-rails – Heroku上的Rails样式表
- Flex中TextInput组件如何设置限制某些字符的输入
- pushlet简单例子ajax-pushlet-client.js
- 关于一篇MSDN(January2006)上的一个XML操作--复制结点
- 如何在十分钟内插入1亿条记录到Oracle数据库?
- Linq to XML 新建XML