2014-05-11 133 views
0

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

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

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

我得到这个错误:

constant "B::size" is not a type name

我试着在网上搜索,但我不能在这个具体问题来了。这可能是我努力正确地说出这个问题......这是一个我还没有看到的奇怪问题。任何帮助表示赞赏!

+0

你声明的方法,但你还没有实现它们。实施在哪里? – merlin2011

+0

这是一个错误的设计。我建议你询问你正在试图解决的实际问题,而不是你想到的解决方案。 – StoryTeller

+0

A的构造函数应该在B的构造函数中调用。除非使用常量,否则不能直接在头文件中实例化。 – donutmonger

回答

3

您不能使用成员变量声明中的参数调用构造函数。

您可以实现B的构造函数并在此处执行此操作。

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

谢谢!这正是我所期待的。我不知道为什么我没有尝试... – user3625087

2

你必须在B构造做,用initializer list

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

private: 
    A a; 
    const int size = ...; 
}; 
相关问题