无法将对象作为引用传递
Can't pass object as a reference
就像标题一样。
我的目标是在不重新创建对象的情况下获取对象,显然我可以使用指针,但是
1)我喜欢保留工厂对象,数据库处理程序等的指针
2)我想学习一些东西,而不是走简单的路
所以代码和错误在底部,感谢您的时间和建议:)
代码中的某个地方
QTcpSocket* socket = (QTcpSocket*)this->sender();
Request request(socket);
Response response(request, this->managerFactory);
响应.h
#ifndef RESPONSE_H
#define RESPONSE_H
#include <QString>
#include "Request.h"
#include "../manager/ManagerFactory.h"
class Response {
public:
Response(const Request &request, ManagerFactory *managerFactory);
QString getValue();
private:
QString generateJsonHeader();
Request &request;
ManagerFactory *managerFactory;
};
#endif /* RESPONSE_H */
共鸣.cpp
#include "Response.h"
Response::Response(const Request &request, ManagerFactory *managerFactory)
{
this->request = request;
this->managerFactory = managerFactory;
}
请求.h
#ifndef REQUEST_H
#define REQUEST_H
#include <QTcpSocket>
#include <QStringList>
#include <QString>
#include <QMap>
class Request {
public:
Request(QTcpSocket* socket);
bool hasParameter(QString paramName);
QString getParameter(QString paramName);
private:
void loadParameters(QTcpSocket* socket);
QMap<QString, QString> parameters;
};
#endif /* REQUEST_H */
请求.cpp
#include "Request.h"
Request::Request(QTcpSocket* socket)
{
this->loadParameters(socket);
}
这就是我面临的错误
source/server/Response.cpp: In constructor ‘Response::Response(const Request&, ManagerFactory*)’:
source/server/Response.cpp:3:1: error: uninitialized reference member ‘Response::request’ [-fpermissive]
make[2]: *** [build/Release/GNU-Linux-x86/Response.o] Error 1
您正在尝试对引用成员变量进行赋值,而不是在初始值设定项列表中对其进行初始化。这是非法的,这就是你遇到错误的原因。
您应该在标头中编写以下构造函数:
class Request;
// ...
class Response {
public:
Response(Request &r) : request(r) {}
// ...
private:
Request &request;
};
虽然,您可能希望考虑使用指针而不是引用成员变量。
相关文章:
- 引用对象成员函数的成员函数
- 从 Base 引用对象调用派生类的成员
- 转换引用对象的边界框?
- 现代编译器会优化只引用对象子集的局部变量吗
- l值引用对象上的Constexpr成员函数:Clang和gcc不同意
- 将 const 类型引用对象注册为类成员对象C++
- Boost Intervocess:通过迭代通过从结构引用对象的映射进行迭代时
- 无法用2D矢量成员引用对象
- 在由引用对象传递中访问由引用对象传递的变量
- 如何使用QString引用对象名称
- 使用自动迭代器引用对象
- C++ 在另一个对象中引用对象的当前状态
- 使用共享对象和引用对象进行引用计数
- 未显式引用对象的全局对象构造函数在最终二进制文件 - LD 中被丢弃
- 引用对象的动态类型何时可以更改
- 引用对象内部的指针
- C++从全局静态函数中引用对象
- C++如何仅在没有其他人直接或间接引用对象指针时删除该指针
- 如何使用C++引用对象
- 为什么引用对象仅保存特定类型的引用