大批:
#ifndef ARRAY_H
#define ARRAY_H
#include <bits/stdc++.h>
using namespace std;
namespace Maifee{
class Value;
class Array {
public:
Array();
vector<Value> _elements;
};
}
#endif // ARRAY_H
目的 :
#ifndef OBJECT_H
#define OBJECT_H
#include <bits/stdc++.h>
#include "value.h"
using namespace std;
namespace Maifee{
class Value;
class Object{
public:
Object();
map<string, Value> _members;
};
}
#endif // OBJECT_H
价值 :
#ifndef VALUE_H
#define VALUE_H
#include <bits/stdc++.h>
#include "array.h"
#include "object.h"
using namespace std;
namespace Maifee{
class Array;
class Object;
class Value {
public:
Value();
Value(Object *__object);
Array *_array;
Object *_object;
};
}
#endif // VALUE_H
我正在尽我最大的努力学习 C++。凭借我对 C++ 的一点点了解,我正在尝试编写一些代码。我移动 C++ 的第一个原因,指针需要很多时间。
在这里,我正在编写这些代码,其中需要前向声明,因此即使在使用前向声明和 ifndef 之后,我也需要使用指针,我真的不想要。
谁能真正帮我解决这个问题,我怎样才能消除循环依赖?
我需要回到C吗?
使用指针时,我遇到了很多问题,例如,我的地图中只有一个键值对,但在下一行,大小变成了一个非常大的数字,不知从何而来。
main 里面的代码:
Object object=Object();
cout << "pop obj tem len" << object._members.size() << endl; //gives 0 as expected
object._members = members;
cout << "pop obj tem len" << object._members.size() << endl; //gives the expected number
Value val=Value(&object);
cout << val._object->_members.size() << "size here" << endl; //gives a random number
带有 Object 参数的 Value 的构造函数:
Value::Value(Object *__object)
{
Object object;
object._members.insert(__object->_members.begin(), __object->_members.end());
_object = &object;
}