【问题标题】:How can I refer to a static private object of a class?如何引用类的静态私有对象?
【发布时间】:2012-08-22 02:09:08
【问题描述】:

这是上下文:

我有一个 A 类应该说“嗨”,但由于 A 不知道说话,它使用 B 类的对象为他说话。因为 A 持有 B 的唯一目的是为 B 说话它,不需要每个 A 持有它自己的 B 对象;因此我选择为此使用唯一的静态私有 B。

像这样:

class A {
    static B b;
public:
    void sayHi();
};

void A::sayHi()
{
    b.sayHi();
}

B 是这样的:

class B {
public:
    void sayHi();
};

void B::sayHi() 
{
    std::cout << "Hi!" << std::endl;
}

问题是当我尝试用 g++ 编译器编译这段代码时......

int main() {
    A a;
    a.sayHi();
    return 0;
}

我收到“未定义的引用”错误。我不确定为什么这不起作用,我想知道编译器认为我指的是 A 中的非静态 B,但我不知道它应该如何。

P.S.:在我的代码中,B 的声明在 A 的声明之前。

【问题讨论】:

  • 骗子不少。您需要定义成员。

标签: c++ static refer


【解决方案1】:

您需要在代码中的某处实际创建静态对象。你所做的只是说班级有一个。将此添加到 .cpp 文件中:

B A::b;

这假定对象应该是默认构造的。

【讨论】:

    猜你喜欢
    • 2016-11-30
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多