gpt4 book ai didi

c++ - 在多个类中实现堆栈时的单一定义规则 (ODR)

转载 作者:行者123 更新时间:2023-11-28 02:26:21 28 4
gpt4 key购买 nike

似乎无法让简单的堆栈实现正常工作。我只是想让两个不同的类(B 类和 C 类)能够在由第三类(A 类)管理的相同堆栈中推送和打印元素。

A.cpp

#include "A.h"
void A::pop() {}
void A::push() {}
void A::print() {} // prints last pushed elements

啊啊

#include < iostream >
class A
{
public:
void pop();
void push();
void print();
}

B.cpp

#include "B.h"
#include "A.h"

A a;

void B::Text() { a.push(); }
void B::Background() { a.print(); } // works!

C.cpp

#include "C.h"
#include "A.h"

A _a; // why doesn't A a work? because ODR?
void B::Text() { _a.push(); }
void B::Background() { _a.print(); } // doesn't work! breakpoint shows empty stack!

我认为我违反了单一定义规则。我说得对吗?

最佳答案

是的,每个变量必须恰好定义一次。在 C.cpp 中使用 extern A a

关于c++ - 在多个类中实现堆栈时的单一定义规则 (ODR),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30502094/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com