-1

A类有一个可以共享的对象,但只能在内部修改

class A 
{
public:
   validityClass ** getValidityShared() // I want to make this const return, not sure how to protect a double pointer const signeture
   {
      return &validityShared;
   }
private:
   validityClass * validityShared;
}

B 类需要通过其构造函数访问、读取以进行验证或 B 类填充

class B
{
   B(A & ainst)
   {
      aValidityShared = ainst.getValidityShared();
   }
private:
   validityClass ** aValidityShared;/// tried to save it as validityClass ** & aValidityShared but I guess its wrong, even though everything worked out
}

B 构造函数结束后,我不再需要了解 A 类的任何信息!

int main(int argc, char* argv[])
{
   A instA;
   B(&instA);
   return EXIT_SUCCESS;
}

我希望 B 实例拥有 A 共享变量,但没有任何额外资源,因此我尝试将其保存为 rValue。

  1. 你有什么建议吗?(在内部保存为 rvalue 或 const (double const))
  2. 双指针的 const 保护如何?
  3. 还是永远不要将其保存在内部?

顺便说一下,这个例子与我使用的略有不同,但它是相同的上下文

我问这个问题是因为我收到了一些奇怪的警告: member initializers forconst char ** classB::xVar`

4

1 回答 1

1
validityClass ** getValidityShared() 
    // I want to make this const return, not sure how 
    // to protect a double pointer const signeture

您需要将 const 添加到值和指针中,因此要提供真正的 const 正确性,签名将是:

validityClass const * const * getValidityShared() const

第二个指针不必是 const,因为它是一个值。我把它const放在了右边,因为这是正确的做法,我相信它使它更具可读性。

你也可以返回一个参考,在这种情况下你会想要:

validityClass const * const & getValidityShared() const
于 2013-09-27T15:27:04.080 回答