【发布时间】:2015-12-06 00:31:28
【问题描述】:
我有一个需要静态 const 变量成员的类。该类的值将在运行时由用户输入知道。我已经阅读了很多帖子,但到目前为止,没有一个解决方案有效。我知道这篇文章:
Can I initialize a static const member at run-time in C++?
包含一个变通方法,但它使用了一个我想避免的全局变量。而且它并不能真正解决问题。
考虑一下:
#include
class A {
friend void foo(int);
static int dummy;
public:
static const int &T;
};
const int &A::T = A::dummy;
int A::dummy = 0;
void foo(int val) { A::dummy = val; }
int main() {
foo(10);
std::cout << A::T << std::endl;
foo(12);
std::cout << A::T << std::endl;
}
程序将编译并在控制台中写入10和12。 Wich 违背了 const 限定符的目的。这里的 const 是引用而不是值。所以我得出的结论是,在执行时不可能有一个静态的 const 类变量!
我知道另一种涉及创建设置类型类的方法,但它不是很整洁。
所以如果有人知道一个简单的解决方案,请告诉我们!
【问题讨论】:
-
请提供一些您自己尝试过的代码以及您可能遇到的错误。在这一点上,您的问题非常广泛。请阅读stackoverflow.com/help/how-to-ask 和stackoverflow.com/help/mcve 以提出更好的问题
-
@davejal 你读过这个问题吗?这不是我尝试的代码或我得到的错误的问题吗?我不觉得我的问题很广泛,对我来说很直接。但无论如何感谢您的反对,
-
第一次你的问题以最好的方式开始(这会导致基于意见的答案),而不是开始你的问题的好方法。第二,您需要一个简单的解决方案(课程、教程或其他东西),而无需提供您自己尝试过的代码。很抱歉,但这值得我投超过 1 票。我只是想帮你问一个更好的问题。
-
英语不是我的母语,也许我应该写更好的方式而不是最好的方式。我不是要求上课或教程类型的答案。只是一种更简单的方法。在什么提供代码将提供更好的答案?我只是想帮助您提出建设性意见。
-
在什么方面提供代码会使我应该写一个更好的问题!
标签: c++ static initialization constants execution-time