考虑B类对象想要将其ID发送给A对象的情况。因此A的ID可以设置为B的ID。这可以视为下订单。然后 A想要给出关于其订单状态的B更新(例如,已发送的订单)。所以B需要有一个应该由A设置的属性。在下面的代码中我有第一个让B在A处下订单,但是第二个允许A给B更新的部分丢失了。我的问题是:"怎么办呢?"
class A
{
private:
string ID;
public:
A()
{
ID = "empty";
}
void set_ID(string id)
{
ID = id;
}
};
class B
{
private:
string B_ID;
public:
B(string id)
{
B_ID = id;
}
void put_request(A& a)
{
a.set_ID(B_ID);
}
};
int main()
{
A a;
B b("my ID");
b.put_request(a);
}
答案 0 :(得分:0)
我不确定,如果我理解你的问题,但是如果你因为名字定义问题而无法使它工作:
此外,您可能希望为每个类声明两个变量:
my_ID
拥有此特定实例的ID。ID
包含由put_request()
设置的ID(可能最初设置为my_ID
?)。现在,代码:
class B;
class A
{
private:
string my_ID;
string ID;
public:
A()
: my_ID("empty")
, ID(my_ID)
{ }
void set_ID(string id);
void put_request(B& b);
};
class B
{
private:
string my_ID;
string ID;
public:
B(string id)
: my_ID(id)
, ID(my_ID)
{ }
void set_ID(string id);
void put_request(A& a);
};
void A::set_ID(string id) { this->ID = id; }
void A::put_request(B& b) { b.set_ID(this->my_ID); }
void B::set_ID(string id){ this->ID = id; }
void B::put_request(A& a) { a.set_ID(this->my_ID); }
答案 1 :(得分:0)
您可以尝试ideone
#include <iostream>
using namespace std;
class A
{
private:
string ID;
public:
A()
{
ID = "empty";
}
void set_ID(string id)
{
ID = id;
}
void write_ID()
{
cout<<"A id : "<<ID<<"\n";
}
};
class B
{
private:
string B_ID;
public:
B(string id)
{
B_ID = id;
}
void put_request(A* a)
{
a->set_ID(B_ID);
}
};
int main()
{
A a;
a.write_ID();
B b("my ID");
b.put_request(&a);
a.write_ID();
}
答案 2 :(得分:0)
最好不要将B ID发送给A类,而是给B对象指针。因此,对象可以访问B的ID以及处理请求所需的B类的其他信息。
每个对象都应该有自己的ID。您不应将A的ID替换为B的。
为了向A对象发出请求,使用B类参数调用A的方法更为明确。不是其他方式。
示例:
#include <string>
#include <iostream>
using std::string;
class B;
class A
{
private:
string id;
B* request;
public:
A(const string& id)
{
this->id = id;
request = NULL;
}
void set_request(B* request)
{
this->request = request;
}
string get_request_id() const;
};
class B
{
private:
string id;
public:
B(const string& id)
{
this->id = id;
}
string get_id() const
{
return id;
}
};
string A::get_request_id() const
{
if (!request)
return string();
return request->get_id();
}
int main()
{
A a("A");
B b("my ID");
a.set_request(&b);
std::cout << a.get_request_id() << std::endl;
}