C ++:错误:无效使用qualified-name

时间:2013-03-02 00:24:48

标签: c++ compiler-errors

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

我收到了一个错误,我无法理解。 我有这段代码:

//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'

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

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

感谢任何帮助。感谢。

3 个答案:

答案 0 :(得分:10)

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

class unInstantiatedClass{
  public:   
    static Structure structObject;
};

Structure unInstantiatedClass::structObject(5);

int main() {
    // Do whatever the program should do
}

答案 1 :(得分:2)

我认为问题在于此     结构unInstantiatedClass :: structObject(5); 在主要内部。把它放在外面。

答案 2 :(得分:0)

您可能希望使用此代码:

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

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

int main(){
    return 0;
}