मेरे पास दो कक्षाएं, foo और bar हैं। foo में बार शामिल है और बार ऑब्जेक्ट्स के पॉइंटर्स का std :: वेक्टर शामिल है। रनटाइम के दौरान किसी बिंदु पर, बार को अन्य बार ऑब्जेक्ट्स के पॉइंटर्स के इस वेक्टर तक पहुंचना होता है। इसके लिए, foo में getBarObjects() नामक एक विधि है जो पॉइंटर्स की सरणी देता है।वर्ग प्रकार के वेक्टर के साथ आगे की घोषणा - अपूर्ण वर्ग प्रकार के सूचक को
इसके लिए, मैं बार में foo घोषित करने के लिए आगे बढ़ता हूं। मैं obvioulsy भी मैं जिस विधि का उपयोग कर रहा हूं उसे घोषित करना है - foo :: getBarObjects()। चूंकि यह पॉइंटर्स को बार में सरणी देता है, मैं एक दुष्चक्र में आता हूं।
मैं आगे शामिल नहीं कर सकता बार बार और फिर आगे बढ़ने में GetBarObjects() शामिल है, क्योंकि इसके परिणामस्वरूप "अपूर्ण प्रकार का नाम अनुमति नहीं है"।
foo.h:
#include "bar.h"
#include <vector>
class foo {
public:
foo();
~foo();
std::vector<bar*> getBarObjects();
private:
std::vector<bar*> barObjects;
}
bar.h:
class foo;
std::vector<bar*> foo::getBarObjects(); // error, doesn't know bar at this point
class bar {
public:
bar(foo *currentFoo);
~bar();
bool dosth();
private:
foo *thisFoo;
}
bar.cpp:
#include "bar.h"
bool bar(foo *currentFoo) {
thisFoo = currentFoo;
}
bool bar::dosth() {
thisFoo->getBarObjects(); // error, pointer to inomplete class type is not allowed
}
मैं बस दूसरी तरह के आसपास शामिल हैं, तो मैं होगा foo पार्श्व में बस एक ही समस्या है। कोई सुझाव?
मेह, एक समस्या का सरल समाधान जो बड़ा लग रहा था। धन्यवाद! – Aerius