我有一个用户定义的类,比如import requests
import json
headers = {
'User-Agent': 'Mozilla/5.0',
'X-Api-Key':'adf51226795afbc4e7575ccc124face7',
}
res = requests.get('https://api2.drive-now.com/cities/4604?expand=full', headers=headers, allow_redirects=False)
print(res.status_code, res.reason)
json_obj = json.loads(res.content)
print(json_obj)
。假设其定义如下:
MyClass
我在哪里
class MyClass
{
int a;
int *b;
Base *c;
};
和
class Base
{
int base_data;
public:
Base(int) { //implementation }
virtual void some_func() = 0;
}
和
class Derived1 : public Base
{
int derived_1;
public:
Derived1(int) { //implementation }
virtual void some_func() { //implementation }
}
我想将此课程的对象发送给class Derived2 : public Base
{
int derived_2;
public:
Derived2(int) { //implementation }
virtual void some_func() { //implementation }
}
。根据{{3}},我可以使用QTcpsocket
,并且在this answer的帮助下,我实施如下:
QDataStream
在类声明中,我正在考虑将其定义为:
friend QDataStream& operator<<(QDataStream&, const MyClass&);
friend QDataStream& operator>>(QDataStream&, MyClass&);
由于我需要发送数据,我正在取消引用指针并发送它指向的数据。
这是正确的方法吗?
如果我这样发送,我无法理解如何在接收端重新创建对象。我在考虑:
QDataStream& operator<<(QDataStream &stream, const MyClass &obj)
{
stream << obj.a;
stream << obj.(*b);
stream << obj.(*Base); // assume QDataStream has been overloaded for Base already
}
对于QDataStream& operator<<(QDataStream &stream, MyClass &obj)
{
stream >> obj.a;
b = new int;
stream >> obj.(*b);
Base = new //what?
stream >> obj.(*Base); // assume QDataStream has been overloaded for Base already
}
指针,我可以创建一个int
并为其分配传入值。但是new int
类型的指针怎么样?我不知道它是Base
还是Derived1
。
我该如何处理?
如果这里没有解决方案,还有其他方式发送类对象吗?
谢谢。