声明类类型变量时出错

时间:2015-04-13 20:24:46

标签: c++

#include <iostream>
using namespace std;
class A{
private:
    int x;
public:
    A(){
        x=0;
    }
    A(int i)
    {
        x=i;
    }
    int Get_x(){
        return x;
    }
};
class B{
    private:
    A objA(1);
    public:
    objA.Get_x();   
};

这是我的代码,它有两个类,即A和B ..第一类运行正常,但在B类..编译器给出了objB声明中的语法错误.....但据我所知应该是正确的...所以请帮助....谢谢

2 个答案:

答案 0 :(得分:1)

此初始化对数据成员无效:

A objA(1);

你需要

A objA{1};

A objA = A(1);

除此之外,这种语句只能在函数内部发生:

objA.Get_x(); 

答案 1 :(得分:0)

编译器试图将A objA(1)解释为函数声明,这是错误的。您可以将objA声明为A objA = A(1);(请注意,这是一个C ++ 11功能,您可能需要在之前启用它。)

另外,我真的不知道objA.Get_x()应该做什么,但这也是错误的,你不能只访问一个函数之外的成员。可能,你的意思是:

int Get_x() {
    return objA.Get_x();
}