未解析的外部符号“private: static float ObjectInfo::Rotation [duplicate]

unresolved external symbol "private: static float ObjectInfo::Rotation [duplicate]

提问人:GameHog 提问时间:5/18/2015 最后编辑:CommunityGameHog 更新时间:5/18/2015 访问量:432

问:

    #include <iostream>

class ObjectInfo{
private:
    static float Rotation;
public:
    //sets object rotation value
    void SetR(float a){ static float Rotation = a; }
    //print roation value (I think this is where the problem is located)
    void PrintR(){ std::cout << Rotation;}
};

int main()
{
    ObjectInfo Wall;
    //set float var
    float Rotation;
    //Get user set rotation
    std::cin >> Rotation;
    //set wall rotation
    Wall.SetR(Rotation);
    //print wall rotation value
    Wall.PrintR();
    std::cin >> Rotation;
}

错误 1 错误 LNK2001:未解析的外部符号“private: static float ObjectInfo::Rotation”(?Rotation@ObjectInfo@@0MA)

错误 2 错误 LNK1120:1 个未解决的外部问题

这是我制作的原型,我不知道如何解决该错误。

有没有人知道是什么原因导致这个错误?

如果我尝试返回该值然后关闭该值,我会得到同样的错误。

有谁知道从类中检索值的替代解决方案?

C++ static-members unresolved-external

评论

0赞 πάντα ῥεῖ 5/18/2015
这个答案特别 stackoverflow.com/a/12574407/1413395

答:

0赞 vsoftco 5/18/2015 #1

您需要为静态成员分配存储,需要

float ObjectInfo::Rotation;

在类定义之外。

评论

0赞 GameHog 5/18/2015
谢谢分配,这不是 c++ 中最明显的事情。感谢您的帮助。