0

単純なスタック実装が機能していないようです。私は単純に、2 つの異なるクラス (クラス B とクラス C) を取得して、3 番目のクラス (クラス 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!

私は 1 つの定義ルールを破っていると思います。私は正しいですか?

4

2 に答える 2

1

A aB.cpp と C.cpp で作成するとA a、実際には 2 つの異なるオブジェクトがあり、それらは同じスタックを指しません。

同じことを達成する別の方法はA、シングルトン オブジェクトとして作成することです。

于 2015-05-28T09:19:03.413 に答える