相关疑难解决方法(0)

公共运营商新的私人运营商删除:使用新的时候获取C2248"无法访问私人会员"

一个类重载了运算符newdelete.new是公开的,delete是私人的.

构造此类的实例时,我收到以下错误:

pFoo = new Foo(bar)
Run Code Online (Sandbox Code Playgroud)

example.cpp(1):错误C2248:'Foo:operator delete':无法访问类'Foo'中声明的私有成员

但是这里没有调用delete,所以在编译器的扭曲思想中发生了什么?:)

  1. 错误的原因是什么?
  2. 是否有可能在不诉诸成员CreateInstance函数的情况下解决问题?

c++ overloading compiler-errors

19
推荐指数
1
解决办法
2655
查看次数

C++中的变量究竟是什么?

标准说

变量由对象的声明引入.变量的名称表示对象.

但这个定义究竟意味着什么呢?

变量是否为对象赋予名称,即变量只是其他匿名对象的命名机制?或者是名称本身的变量?

或者,变量是一个命名对象,因为每个变量也是一个对象?

或者是一个变量只是一个"代理",其名称将所有操作"委托"给真实对象?

为了进一步混淆,许多C++书籍似乎将变量和对象视为同义词.

你对此有什么看法?


关于实体,引用C++ 0x草案:

实体是价值,对象,参考,功能[...]

表示实体的每个名称都由声明引入.

变量由对象的声明引入

从这些陈述中我得出结论,变量是名称,因此不能是对象.这真让我感到困惑:)

c++ variables object

6
推荐指数
1
解决办法
483
查看次数

删除指针并将其设置为nullptr有什么区别?

是说delete pointerpointer = nullptr一样吗?可能不是,但后者会释放内存吗?怎么样delete pointer; pointer = nullptr/ pointer = nullptr; delete pointer?为什么不使用它来提供一种安全的方法来过早地删除指针,如果需要,通常会在其他时间删除它们并导致正常删除错误?

c++ memory pointers heap-memory dangling-pointer

4
推荐指数
2
解决办法
2603
查看次数