【问题标题】:Unresolved external symbol LINK 2019 [duplicate]未解决的外部符号 LINK 2019 [重复]
【发布时间】:2014-07-05 22:14:15
【问题描述】:

我在 .cpp 文件中声明了一个类,并将结构写在 .h 文件中, 为了在其他 .cpp 文件中使用该类

例子:

    //class1.cpp                    //class1.h
    class class1                    class class1
    {                               {
     private:                        private:
        double X;                       double X;
        ...                             ...
     public:                         public:
        double getX(){return X;}        double getX();
        ...                             ...
    };                              };

Class2 将包含“class1.h”,因此我可以使用 class1,但只能在新类 class2 中使用。

我想要什么:

    include "class1.h"

    class1 c;

    class class2{/* ... */};

是否有可能,如果可以,如何在 class2.cpp 中声明一个 class1 类型的全局对象?

【问题讨论】:

    标签: c++ class header global-variables lnk2019


    【解决方案1】:

    您的 class1.cpp 是问题所在。

    它应该看起来更像这样:

    double class1::getX(){return X;}
    

    你不需要那里的其他东西。

    至于让 c 只能在 class2 中使用,您可以像这样将当前的 c 设为静态:

    static class1 c;
    

    这会导致它仅在该文件中可见。 或者,您可以使 c 在 class2 中成为静态变量。 类2.h:

    class class2{
    private:
        static class1 c;
    }
    

    class2.cpp:

    class1 class2::c;
    

    这是你初始化它的地方。 (100% 必要)

    http://www.cplusplus.com/doc/tutorial/classes/

    http://www.learncpp.com/cpp-tutorial/811-static-member-variables/

    【讨论】:

    • 在 class2 中声明 class1 类型的成员,不是我的问题。我更感兴趣的是使用独立于其他任何东西的全局对象 class1。静态属性对我没有帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-05-29
    • 2010-11-12
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多