1

我有一个单身课程。我想为结构成员赋值。但是编译器抛出错误为A nonstatic member reference must be relative to a specific object. 请帮助我,如何解决相同的问题。

class abc{

    static abc* m_selfInst;
public:

    struct abcd{
        int a;
    }abcd;

abc* GetInstance();
};

abc* abc::m_selfInst = NULL;

abc* abc::GetInstance()
{
    if(m_selfInst == NULL)
    {
        m_selfInst = new abc();
    }
    return m_selfInst;
}
int main()
{
    abc *ab = abc::GetInstance(); //Error Occurs here
    abc::abcd.a = 5; //Error occurs here too
    //cout <<ab.abcd.a << "\n";

    return 0;
}
4

2 回答 2

4
abc *ab = abc::GetInstance();

GetInstance()方法必须声明static,否则只能在 的实例上调用abc

abc::abcd.a = 5;

这里,abc::abcd是类型。据推测,您需要引用指向的abcd 实例abc 实例ab

ab->abcd.a = 5;

你真的应该避免给实例和类型提供相同的名称(如struct abcd和实例abcd)。

于 2013-04-22T06:55:02.443 回答
2

GetInstance应该是static功能。

static abc* GetInstance();

访问a应该使用类型的变量abc

ab->abcd.a

named类型的结构abcd和对象确实令人困惑。大概应该是abcdabcd

struct {
    int a;
} abcd;
于 2013-04-22T06:54:43.503 回答