【问题标题】:const pointer as class field assignconst 指针作为类字段分配
【发布时间】:2011-03-22 10:40:31
【问题描述】:

我回到了 C++,几乎不需要任何帮助。我知道什么是 const 指针,但我可以知道,如何在构造函数中正确分配它,这令人沮丧;)

例如:

public:
  TransferManager::TransferManager( Account * source, double amount )
  { 
    account = source; // that doesn't work ;)
  }

private:
  Account * const account;

1>proj1.cpp(63): error C2166: l-value specifies const object

那个错误信息我不清楚。

我做了一些研究,但我发现的只是 const 指针、指向 const var 的指针和指向 const var 的 const 指针之间的区别......

【问题讨论】:

    标签: c++ pointers


    【解决方案1】:

    使用初始化列表来初始化 const 成员:

    TransferManager::TransferManager( Account * source, double amount ) : account(source) {
    }
    

    错误消息是说您正在尝试分配给 const 的东西 - 这是不允许的。您必须初始化这样的成员变量,而不是分配给它们。

    【讨论】:

    • 它是“initializ/ation/ list”,initializ/er/ list 是 C++0x 的一个新结构,用于启用std::vector<int> v = { 1, 2, 3, 4, 5 }
    • @filmor:实际上是c++03标准中的mem-initializer-list
    • 所以这里 C++ const 与 Java final 不同... ;) 非常感谢!
    • @dantuch:是的,finalconst 有一些相似之处,但它们绝不相同。
    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 2014-08-23
    • 1970-01-01
    • 2016-04-18
    • 2014-05-30
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多