【问题标题】:Using constructor of an object within another class在另一个类中使用对象的构造函数
【发布时间】:2014-05-11 08:44:03
【问题描述】:

我创建了一个带有构造函数的类,该构造函数采用 int 来确定对象所具有的链表的大小。我遇到的问题是,当这个对象被实例化为另一个类的私有成员时,我需要能够调用这个构造函数。所以基本上:

class A {
public:
    A();
    A(int size);
};

class B {
    const int size = // any number > 0
private:
    A a(size);
};

我得到这个错误:

constant "B::size" 不是类型名称

我已尝试在线搜索,但无法遇到此特定问题。可能是我在努力正确地表达这个问题......这是一个我还没有看到的奇怪问题。任何帮助表示赞赏!

【问题讨论】:

  • 你已经声明了方法,但是你还没有实现它们。实施在哪里?
  • 这是一个错误的设计。我建议您询问您要解决的实际问题,而不是您想到的解决方案。
  • A的构造函数应该在B的构造函数中调用。除非使用常量,否则不能直接在头文件中实例化。
  • 你的A a(size);声明有误,应该是A a;并在类B的构造函数成员初始化列表中初始化a成员。
  • 感谢甜甜圈和πάντα ῥεῖ!

标签: c++ class constructor


【解决方案1】:

在成员变量声明中不能带参数调用构造函数。

你可以为 B 实现一个构造函数并在那里做。

B::B() : a(size) {}

【讨论】:

  • 谢谢!这正是我一直在寻找的。我不知道为什么我没有尝试...
【解决方案2】:

您必须在B 构造函数中使用initializer list

class B
{
public:
    B() : a(size)
    {}

private:
    A a;
    const int size = ...;
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 2016-01-08
    • 1970-01-01
    相关资源
    最近更新 更多