所以我决定在我的项目中摆脱单例并引入依赖注入。我做了所有必要的更改,但遇到了一个小问题:无论我做什么,我的 NetworkService 都会被调用,无论它是否已初始化为 nullptr。我开始调查,我得到了一个不可能的场景。我感到无能为力,我放弃了。我不知道这段代码如何毫无问题地执行:
auto impossible_response = ((NetworkService*)nullptr)->post(
format_url("/api/data/fetch/"),
payload.dump(),
headers);
log.crit("How did this succeeded? Please help me, StackOverflow");
Run Code Online (Sandbox Code Playgroud)
我正在通过 Gradle 使用 G++ (C++20) 在 ArcoLinux 上编译我的代码。我已经尝试从头开始重建它,而不使用以前版本的任何缓存。
实际上我正在编写我自己的所有库类的版本,我不想将STL文件包含到我的类文件中.因此,例如,我想检查节点是否等于null.如果我写的东西像
#define nullptr 0
Run Code Online (Sandbox Code Playgroud)
然后它不使用其他节点指针(即Node *root = nullptr)
由于某种原因,我不能在datacenter.cpp中使用vector _vec.它说" 这个 "是"nullptr"
请帮助,谢谢<3
datacenter.h
#pragma once
#include <iostream>
#include <vector>
class datacenter
{
public:
datacenter();
~datacenter();
void get_elements();
std::vector<float> _vec;
};
Run Code Online (Sandbox Code Playgroud)
datacenter.cpp
#include "datacenter.h"
datacenter::datacenter(){}
void datacenter::get_elements()
{
if (_vec.empty()) { //<---- the error appears here
std::cout << "empty" << std::endl;
}
}
datacenter::~datacenter(){}
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#include <iostream>
#include <vector>
#include "datacenter.h"
class datacenter;
int main()
{
std::unique_ptr<datacenter> dc;
dc->get_elements();
}
Run Code Online (Sandbox Code Playgroud) 我是 C++ 新手,正在阅读《使用 C++ 的编程原理和实践》一书。我遇到了一些我无法完全理解的事情。希望有人能帮助我理解这一点。
为什么这是无效的?
int* p = nullptr;
*p = 7;
Run Code Online (Sandbox Code Playgroud)