错误、漏洞、问题 - 页 2721

 
Koldun Zloy:

这是不可能的。如果你不打算改变它,这并不意味着你必须做出改变。让变量成为私有变量就足够了。

如果你能从中得到一些东西,那是合乎逻辑的,但你只是给自己制造了一个问题

const是一个额外的控制。否则,你根本就不必在语言中引入这个指令。


公共常量字段的好处是,它是可读的(可以通过引用传递)。但错误地改变它是被排除的。


在编写程序时,const对我帮助很大。这是第一次出现的问题。


在不能写的地方使用this和:: 也有帮助。

 
fxsaber:

const是一个额外的控制。否则,我们可以完全避免在语言中引入这一指令。


公共常量字段的好处在于它是可读的(可以通过引用传递)。但错误地改变它是被排除的。


在编写程序时,const对我帮助很大。这是第一次出现的问题。


HH 在不能写的地方使用this和:: 也有帮助。

使得该变量成为私有变量。使用一个函数进行读取,不需要通过引用传递const int。

 
Koldun Zloy:

使得该变量成为私有变量。使用一个函数来读取它。 没有必要通过引用来传递 const int。

你提议干脆不理会常态。

 
fxsaber:

你的意思是说,const被简单地忽略了。

不,但在这个特定的情况下不需要。

 
伙计,你无中生有。"老鼠哭了又哭,却一直在咬着仙人掌"
 
fxsaber:

我做了实验,一般来说,无论你怎么看,任何解决方案都会有 "缺陷"。

如果我们谈论的是执行速度和控制对结构域的访问,你可以写一个丑陋的解决方案,但它会解决这个问题

我将完全放弃结构中的静态方法--它们没有任何意义,代码仍将是混乱的和不符合逻辑的。

它看起来像这样。

int tmp[] = {1,2,3,99};
struct A
{
private:
   static int count;
public:
   const int a;
   A():a(tmp[count++]) {}
};
static int A::count = 0;
//+------------------------------------------------------------------+
void OnStart()
{
   A a[ArraySize(tmp)];
   for(int i=0;i<ArraySize(a);i++) Print(a[i].a);
}


....da,也不需要计数计数器,事实上,你需要将A[ArraySize(tmp)];包裹在一个宏替换中,创建一个结构数组并删除一个临时数组tmp

 

有两个程序同时在同一个文件上工作。写的那个使用FILE_READ|FILE_WRITE|FILE_BIN|FILE_SHARE_READ 标志。读取的是 - FILE_READ|FILE_BIN|FILE_SHARE_WRITE|FILE_SHARE_READ。尽管第一个程序使用FileFlush定期保存文件,但第二个程序只在文件被打开时看到文件的长度。试着来回做FileSeek - 没有帮助。

问题:如何使读取文件的程序捡起要覆盖的数据?

 

我总结一下。

struct A {
    const int a; 
    A() {}
};
void OnStart()
{
            A a1; //(1) нормально
    const int a2; //(2) Error: 'a2' - 'const' variable must be initialized
}

1和2之间有什么区别?

 
A100:

我总结一下。

1和2之间的区别是什么?

我希望有一些内置的机制来初始化这种情况,但那里什么也没有。

struct A {
    const int a[10]; 
    A() {ArrayPrint(a);} //-396985669       32758 -1490812928       32757  2147360768           0 -1681390008         493           0           0

};
//+------------------------------------------------------------------+
void OnStart()
{
  A a1;
}
//+------------------------------------------------------------------+

ZS:在这里,编译器看到

void f()
{
   const int x;  //'x' - 'const' variable must be initialized
}
 
Igor Makanu:

我曾希望有一些内置的机制来初始化这种情况,但那里什么也没有。

ZS:在这里,编译器看到

原则上不应该有这种情况--这个问题应该在编译器层面就已经解决了(如C++)。而在这里,它是一种可能,因此,讨论了好几页