2016-02-19 75 views
-1

我正在写一个cpp程序,我遇到了一个问题。它看起来很“容易”,但仍然无法找到如何摆脱它。C++简单代码与类

这里的问题的一个简化版本:

class a 
{ 
public: 
    int number; 
    a(); 
    a(int x); 
    void set_num(int n); 
}; 
a::a() 
{ 

} 

a::a(int x) 
{ 
    number = x; 
} 
void a::set_num(int n) 
{ 
    number = n; 
} 

class b 
{ 
public: 
    a abcdef(); 

    b(); 
    b(int x); 
}; 

b::b(int x) 
{ 
    abcdef.set_num(x); 
} 

我想用“类” -s在“B类”复制,我想用在“set_num”功能给它的值“b” -s构造后,我与它的默认构造函数( “一ABCDEF();”)创建它

但是当我运行的代码,它说:

错误:“((b *)本) - > b :: abcdef'没有类的类型。

任何想法,如何解决这个问题?

感谢您的帮助。

+3

'abcdef'被声明为返回一个'了'功能。将该行更改为'a abcdef;'(不带'()')来声明一个变量。 –

回答

2

当你写:

a abcdef(); // oops, do you really want this ? 

这意味着你必须在你b类的成员函数,不带任何参数,并返回一个。

从你的解释我知道你肯定想要一个a对象作为成员:

a abcdef; // this is a member variable that you can set with setnum. 
1

因为你没有定义a类型的成员,但不带参数,并返回一个a的功能。

而是写:

a abcdef;