C++: Objektinstanzierung via friend Klasse (Factory)

Gast #3068388
Lesenswert?

Hi,

ich habe Probleme eine Factory Klasse zu schreiben. Die Suche im 
Internet hat mir auch nicht geholfen.

Soweit ich das verstanden habe, funktioniert das so:
1
#include <iostream>
2

3
class Context;
4

5
class Buffer
6
{
7
private:
8
  Buffer();
9

10
  friend class Context;
11
};
12

13
class Context
14
{
15
public:
16
  unsigned int count;
17
  Context() : count(0) {}
18

19
  Buffer* CreateBuffer()
20
  {
21
    count++;
22
    return new Buffer();
23
  }
24

25
  void DestroyBuffer(Buffer* buf)
26
  {
27
    count--;
28
    delete buf;
29
  }
30
};
31

32

33
int main() {
34
  Context context;
35
  Buffer* buf = context.CreateBuffer();
36

37
  std::cout << context.count;
38

39
  context.DestroyBuffer(buf);
40

41
  std::cout << context.count;
42

43
  std::cin.get();
44

45
  return 0;
46
}

Doch anstatt einem lauffähigen Programm bekomme ich einen Fehler bei 
"return new Buffer();" (MinGW GCC):
1
undefined reference to `Buffer::Buffer()

oder bei MSVC (2012) gleich einen Linkerfehler:
1
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""private: __thiscall Buffer::Buffer(void)" (??0Buffer@@AAE@XZ)" in Funktion ""public: class Buffer * __thiscall Context::CreateBuffer(void)" (?CreateBuffer@Context@@QAEPAVBuffer@@XZ)".

Was mache ich falsch und wie geht es richtig?
Vielen Dank im Voraus!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren