将派生对象声明为类中的私有成员时的编译错误

时间:2013-11-25 02:11:12

标签: c++

我的编译器抱怨说我将一个对象声明为另一个类的私有成员(如下所示)给了我这个错误:

  

私人:

   ForwardStrategy::ForwardStrategy* forwardStrategy;

   ForwardToStrategy::ForwardToStrategy* forwardToStrategy;

/home/ics45c/projects/p4/src/Person.hpp:45:19:错误:对'ForwardStrategy'的限定引用是一个构造函数       名称而不是可以声明构造函数的类型         ForwardStrategy :: ForwardStrategy * forwardStrategy;                          ^ /home/ics45c/projects/p4/src/Person.hpp:47:21:错误:对'ForwardToStrategy'的限定引用是一个构造函数       名称而不是可以声明构造函数的类型         ForwardToStrategy :: ForwardToStrategy * forwardToStrategy;                            ^

生成了2个错误。

所以看起来编译器认为我指的是构造函数而不是类型,但我不确定如何纠正这个问题......

抱歉格式糟糕......我不确定如何正确地做到这一点,但提前谢谢!

1 个答案:

答案 0 :(得分:1)

只需将其更改为:

private:

ForwardStrategy* forwardStrategy;

ForwardToStrategy* forwardToStrategy;

因为它在你的问题中写的方式意味着你试图访问这个类的成员(这是构造函数)没有定义它的实例。