小编Lap*_*apo的帖子

使用有界类型参数的"两种方法都具有相同的擦除"错误

我第一次在Java中使用泛型,我面临一个我无法克服的问题:为什么这会编译:

public interface Aa{}
public interface Bb{}
public interface Cc{}


public static <GenericAB extends Aa & Bb>
void method(GenericAB myABobject1, GenericAB myABobject2){}

public static <GenericAB extends Aa & Bb, GenericCA extends Cc & Aa>
void method(GenericAB myAbobject, GenericCA myCAobject){}
Run Code Online (Sandbox Code Playgroud)

但这不是:

public interface Aa{}
public interface Bb{}
public interface Cc{}


public static <GenericAB extends Aa & Bb>
void method(GenericAB myABobject1, GenericAB myABobject2){}

public static <GenericAB extends Aa & Bb, GenericAC extends Aa & Cc>
void method(GenericAB myAbobject, GenericAC myACobject){}
Run Code Online (Sandbox Code Playgroud)

我得到这个错误:两种方法都有相同的擦除 …

java generics type-erasure

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

在 C++20 模块中打破循环依赖的前向声明不起作用

我一直在敲打我的头在这个问题上几天,我读了很多文件和有关新的C ++ 20个模块。其中职位的这名负责人一个这一个#2这等一个,但我真的不解决这个问题.

我使用的是随Visual Studio Preview 16.6.0 2.0一起提供的 MSVC 编译器。我知道它还不是一个稳定的版本,但我想弄乱新功能来开始学习它们。

基本上,我编写了一个模块 ( myModule) 和该模块的 2 个分区 ( mySubmodule1and mySubmodule2),并在两个模块实现文件 ( mySubmodule1Impl.cppand mySubmodule2Impl.cpp) 中实现了它们。

mySubmodule1依赖于mySubmodule2,反之亦然。这是来源:

mySubmodule1.ix

export module myModule:mySubmodule1;

export namespace myNamespace{

class MyClass2;

class MyClass1{
    public:
    int foo(MyClass2& c);
    int x = 9;
};
}
Run Code Online (Sandbox Code Playgroud)

mySubmodule2.ix

export module myModule:mySubmodule2;
import :mySubmodule1;

export namespace myNamespace{

class MyClass2 {
    public:
    MyClass2(MyClass1 x);
    int x = 14; …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++ c++20 c++-modules

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

具有多个模板参数的概念

我正在尝试使用 C++20 概念,开始熟悉它们。我对简单的概念感到很舒服,例如使用标准概念movable我可以写这样的东西(在所有示例中,我想我using namespace std和我都包括在内,<concepts>并且需要任何其他标题):

template<movable T>
int foo (T obj);
Run Code Online (Sandbox Code Playgroud)

并确保在调用此函数时obj可以移动传递的对象。我什至可以用更长的形式写这个:

template<typename T>
requires movable<T>
int foo (T obj);
Run Code Online (Sandbox Code Playgroud)

结果是一样的(我认为)。

但是现在让我们看看另一个概念,例如same_as. same_as需要 2 个模板参数(要比较的 2 种类型),所以我可以写:

template<typename T>
requires same_as<T, string>
int bar (T obj);
Run Code Online (Sandbox Code Playgroud)

现在 T 是string。但是我怎样才能写成更短的形式呢?我试过了,我可以写这个(正如我直觉所期望的):

template<same_as<string> T>
int bar (T obj);
Run Code Online (Sandbox Code Playgroud)

但是这种形式背后的正式规则是什么?

函数模板参数的名称( T)是否作为概念模板的第一个参数输入?或者也许是最后一次?我不知道,关于这个主题的信息很少。我的意思是,在这个例子中它是无关紧要的,因为same_as<A, B> 在语义上等同same_as<B, A>,但在某些情况下,顺序很重要。


我知道有类似标题的问题,例如this one,但它提出了不同的问题。

这些是我试图从中获取信息但失败的资源:cppReferencecppModernes、 …

c++ templates c++-concepts c++20

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

Android Studio错误:无法连接到守护程序

我已经使用AS几个月了,但是自从两天以来,尝试运行我的应用程序时出现错误:

Unable to run 'adb': null
'C:\Users\lapof\AppData\Local\Android\Sdk\platform-tools\adb.exe start-server' failed -- run manually if necessary
* daemon not running; starting now at tcp:5037
could not read ok from ADB Server
* failed to start daemon
error: cannot connect to daemon
Run Code Online (Sandbox Code Playgroud)

我读过很多人遇到此问题的信息,但是提供的解决方案对我不起作用。我特别阅读以下问题:

这些问题的很多答案都说要从任务管理器中关闭adb.exe,问题是adb.exe没有运行,如果我尝试通过.\adb start-server在PowerShell窗口中键入来重新启动它,则会遇到相同的错误。

我也尝试重新启动我的PC,但是它不起作用。在我要连接的Android设备上(三星Galaxy S8),我启用了USB调试功能。我什至尝试删除所有授权的设备,但没有任何效果。

我检查了其他进程是否使用了5037端口,但adb.exe使用了5037端口(并且该端口的防火墙状态是允许的,但不受限制)。顺便说一句,正如我所说,在任务管理器中没有adb.exe。

最后,我尝试遵循我所链接的最后一个问题中提供的说明(基本上,我重新下载了adb.exe)。最初我跑了.\adb start-server,出现了这个奇怪的错误:

* daemon not running. starting it now on port 5037 *
* daemon started successfully *
** daemon …
Run Code Online (Sandbox Code Playgroud)

android adb android-studio

5
推荐指数
6
解决办法
1万
查看次数