在一个非常简单的情况下,我有以下的设置,我只是想从类A(单例和实例与这个问题无关)的函数初始化一个常量静态成员(类foo):
class A { public: static A instance; A & getInstance() { return instance; } int i(){ return 10;} int j(){ return 20;} }; class foo { public: static const int ii = A::getInstance().i() * A::getInstance().j(); }; const int foo::ii; int main() { foo f; return 1; }
目标是使用上面的一些函数来初始化成员ii。 但它会产生以下错误:
$ c++ static_constant.cpp static_constant.cpp:14:30: error: 'A::getInstance()' cannot appear in a constant-expression static_constant.cpp:14:42: error: a function call cannot appear in a constant-expression static_constant.cpp:14:44: error: '.' cannot appear in a constant-expression static_constant.cpp:14:46: error: a function call cannot appear in a constant-expression static_constant.cpp:14:53: error: 'A::getInstance()' cannot appear in a constant-expression static_constant.cpp:14:65: error: a function call cannot appear in a constant-expression static_constant.cpp:14:67: error: '.' cannot appear in a constant-expression static_constant.cpp:14:69: error: a function call cannot appear in a constant-expression
你能帮我吗? 会欣赏它。
GetFileAttributesA返回“17”为一个现有的目录。 “16”表示这是一个目录,在文档中没有提到“17”
什么是Linux相当于MAXDWORD?
Linux内核中的variables名称之后的* const *的使用扭曲
在C#程序集中定义了WM_KEYDOWN常量吗?
为什么不包含在.net中的Windows常量?
char * const args defintion
class A { public: static A instance; static A & getInstance() { return instance; } int i(){ return 10;} int j(){ return 20;} }; class foo { public: static const int ii; }; const int foo::ii = A::getInstance().i() * A::getInstance().j(); AA::instance;
您正在使用getInstance作为静态函数,但它没有被声明为static 。
更改getInstance的声明:
static A & getInstance() { return instance; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。