小编Tes*_*ser的帖子

为什么我在使用 LOMBOK 时必须在 spring-boot-maven-plugin 中添加排除?

我正在尝试在我的项目中使用 Lombok。我的问题是我必须在 POM.xml 中添加 Lombok 依赖项,如下所示

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
Run Code Online (Sandbox Code Playgroud)

a) 为什么我必须在标签下添加以下代码build?下面的排除有什么必要?

<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
            </exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
Run Code Online (Sandbox Code Playgroud)

b) 为什么我需要安装 LOMBOK 插件作为 IntelliJ idea 设置的一部分?

谁能用简单通俗的语言解释一下,以便我了解基础知识?

spring intellij-idea lombok spring-boot intellij-lombok-plugin

8
推荐指数
1
解决办法
1661
查看次数

可以将指针的引用作为函数参数传递吗?

我的理解是,在 C++ 中 & 和 * 相互抵消,即 int *&p 本质上等于 p 作为其在整数 p 地址处的值。

现在,鉴于上述情况,传递对指针的引用是否有效,即说我试图将对指针的引用作为函数中的参数传递,如下所示?

void func(int* &p)
Run Code Online (Sandbox Code Playgroud)

上面的结果不会导致用 & 取消 * 并且只是 int p 吗?如果我尝试以类似的方式传递对类对象指针的引用,它有多正确?

#include <iostream>

using namespace std;

int gobal_var = 42;

// function to change Reference to pointer value
void changeReferenceValue(int*& pp)
{
    pp = &gobal_var;
}

int main()
{
    int var = 23;
    int* ptr_to_var = &var;

    cout << "Passing a Reference to a pointer to function" << endl;

    cout << "Before :" << *ptr_to_var …
Run Code Online (Sandbox Code Playgroud)

c++ c++17

1
推荐指数
1
解决办法
77
查看次数

为什么通用参考被视为 R 值参考?

#include <iostream>

class A
{
public:
    A() {};
};

template <class T>
class Test
{
public:
    void func1(T&& t)
    {

    }
};

int main()
{
    A a;
    Test<A> o1;

    o1.func1(a); 

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译时出现以下错误

error C2664: 'void Test<A>::func1(T &&)': cannot convert argument 1 from 'A' to 'T &&'
note: You cannot bind an lvalue to an rvalue reference
Run Code Online (Sandbox Code Playgroud)

o1是通过实例化模板类 Test 来获得的"A"。所以调用o1.func1(a)应该知道void func1(T&& t)应该解析为void func1(A&& t)

我认为T&&invoid func1(T&& t)应该被推导为通用引用或转发引用,因为它来自模板类型参数。那么为什么在上面的错误中会说呢 …

c++ forwarding-reference

1
推荐指数
1
解决办法
126
查看次数

typedef 语法中名称和类型的正确位置是什么?

通常typedef的语法如下

typedef <existing_name> <new_name>
Run Code Online (Sandbox Code Playgroud)

但在下面的例子中,我有点困惑

  typedef char yes[1];
  typedef char no[2];
Run Code Online (Sandbox Code Playgroud)

上面这个似乎有效。为什么以及如何?

难道不应该写成下面这样吗?

  typedef yes char[1];
  typedef no char[2];
Run Code Online (Sandbox Code Playgroud)

c++ typedef c++17

1
推荐指数
1
解决办法
75
查看次数

用现代 C++ 等效结构替换 C 可变参数

我正在尝试用 C++ 等效项重写旧的 C 代码。我正在开发的模块似乎大量使用 C 变量参数列表。常见用法示例之一如下(请注意,下面的代码只是指示性示例,它不是实际的生产代码。我的目的是用现代 C++ 结构重写 VARARGS 的用法):

#include <stdio.h>
#include <stdarg.h>
 
void simple_printf(const char* fmt, ...)
{
    va_list args;
    va_start(args, fmt);
 
    while (*fmt != '\0') {
        if (*fmt == 'd') {
            int i = va_arg(args, int);
            printf("%d\n", i);
        } else if (*fmt == 'c') {
            // A 'char' variable will be promoted to 'int'
            // A character literal in C is already 'int' by itself
            int c = va_arg(args, int);
            printf("%c\n", c);
        } else if (*fmt …
Run Code Online (Sandbox Code Playgroud)

c++ c++20

1
推荐指数
1
解决办法
196
查看次数