3

更新:我认为它是固定的。多谢你们!

我遇到了一个错误,我就是想不通。我有这个代码:

//A Structure with one variable and a constructor
struct Structure{
  public:
    int dataMember;

    Structure(int param);
};

//Implemented constructor
Structure::Structure(int param){
    dataMember = param;
}

//A class (which I don't plan to instantiate), 
//that has a static object made from Structure inside of it
class unInstantiatedClass{
  public:   
    static Structure structObject;
};

//main(), where I try to put the implementation of the Structure from my class,
//by calling its constructor
int main(){
    //error on the line below
    Structure unInstantiatedClass::structObject(5);

    return 0;
}

在显示“Structure unInstantiatedClass::structObject(5);”的行上,我收到一条错误消息:

error: invalid use of qualified-name 'unInstantiatedClass::structObject'

我用谷歌搜索了这个错误并查看了几个论坛帖子,但每个人的问题似乎都不同。我也试过谷歌搜索“类中的静态结构对象”和其他相关短语,但没有找到任何我认为与我的问题真正相关的短语。

我在这里要做的是:拥有一个我从未实例化的类。并且在该类中拥有一个静态对象,该对象具有一个可以通过构造函数设置的变量。

任何帮助表示赞赏。谢谢。

4

3 回答 3

11

静态成员的定义不能在函数内部:

class unInstantiatedClass{
  public:   
    static Structure structObject;
};

Structure unInstantiatedClass::structObject(5);

int main() {
    // Do whatever the program should do
}
于 2013-03-02T00:32:29.737 回答
2

我认为问题在于 Structure unInstantiatedClass::structObject(5); 是主要的。放在外面。

于 2013-03-02T00:32:55.267 回答
0

你会想使用这个代码:

更新:将静态成员的初始化移动到全局范围。

// In global scope, initialize the static member
Structure unInstantiatedClass::structObject(5);

int main(){
    return 0;
}
于 2013-03-02T00:28:30.957 回答