小编The*_*ind的帖子

NameError:名称“glPushMatrix”未定义

尝试运行稳定基线健身房的测试代码

import gym

from stable_baselines3 import A2C

env = gym.make("CartPole-v1")

model = A2C("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=10_000)

obs = env.reset()
for i in range(100):
    action, _state = model.predict(obs, deterministic=True)
    obs, reward, done, info = env.step(action)
    env.render()
    if done:
      obs = env.reset()
Run Code Online (Sandbox Code Playgroud)

发现错误“NameError:名称'glPushMatrix'未定义”

Traceback (most recent call last):
  File "test_cart_pole.py", line 14, in <module>
    env.render()
  File "/Users/xxx/opt/anaconda3/lib/python3.8/site-packages/gym/core.py", line 295, in render
    return self.env.render(mode, **kwargs)
  File "/Users/xxx/opt/anaconda3/lib/python3.8/site-packages/gym/envs/classic_control/cartpole.py", line 229, in render
    return self.viewer.render(return_rgb_array=mode == "rgb_array")
  File "/Users/xxx/opt/anaconda3/lib/python3.8/site-packages/gym/envs/classic_control/rendering.py", line 126, in render
    self.transform.enable()
  File …
Run Code Online (Sandbox Code Playgroud)

python opengl render

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

如何清除ListView选择?

TL; DR:您从(a)我的列表视图中选择一个选项.然后,你改变主意并在(b)我的编辑文本中输入内容.如何清除列表视图选择并仅显示您的编辑文本?(反之亦然)

我有一个带有选项列表视图的应用程序以及一个用于创建自己选项的edittext.我需要用户选择或创建一个选项,但不能同时选择或创建两个选项.这是我的布局图:

在此输入图像描述

每当用户从列表视图中选择一个选项时,我将其设置为"已选择",方法是将其设置为绿色,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_selected="true"
        android:drawable="@color/colorPrimary"/>
    <item
        android:state_selected="false"
        android:drawable="@color/windowBackground" />
</selector>
Run Code Online (Sandbox Code Playgroud)

(这被设置为我的listview的背景)

问题:如果用户决定输入他们自己的选项,我想取消选择listview选项,因为他们只能有一个选项.

  1. 用户从列表视图中选择一个选项
  2. 用户决定使用edittext创建自己的选项
  3. 当listview选项开始键入自己的选项时,它将被取消选中

我尝试过以下操作,但没有任何选择.

e.setOnEditorActionListener(new TextView.OnEditorActionListener()
        {
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

                for(int i=0; i<=5; i++){
                                listView.setItemChecked(i, false);
                }
                listView.clearChoices();
                listView.requestLayout()
                adapter.notifyDataSetChanged()
             }
        }
Run Code Online (Sandbox Code Playgroud)

一个非常令人费解的困境,任何帮助表示赞赏!

编辑:这是edittext的布局:

<EditText
                android:id="@+id/editText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/textView4"
                android:layout_alignBottom="@+id/textView4"
                android:layout_toEndOf="@+id/textView4"
                android:layout_toRightOf="@+id/textView4"
                android:color="@color/colorPrimary"
                android:imeOptions="actionDone"
                android:inputType="text"
                android:textColor="@color/textColorPrimary"
                android:textColorHint="@color/colorPrimary" />
Run Code Online (Sandbox Code Playgroud)

编辑:这是listview的布局:

    <ListView
        android:id="@+id/listview"
        android:layout_width="wrap_content"
        android:layout_height="250dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/toolbar"
        android:background="@drawable/bg_key"
        android:choiceMode="singleChoice"
        android:listSelector="@color/colorPrimary">

    </ListView>
Run Code Online (Sandbox Code Playgroud)

java android android-listview android-xml

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

模板专业化枚举成员的前向声明 - GCC 失败

我知道,一般来说,我们可以在 C++11 中前向声明枚举。

那么,为什么会这样:

enum kind_t { kind1, kind2 };

template <kind_t Kind> struct foo {};

template <> struct foo<kind1> {
    enum named : int;
};

enum foo<kind1>::named : int {
    named1 = 123,
    named2 = 456,
};
Run Code Online (Sandbox Code Playgroud)

使用 GCC (12.1) 编译失败?错误(上帝螺栓):

<source>:9:6: error: cannot add an enumerator list to a template instantiation
    9 | enum foo<kind1>::named : int {
      |      ^~~~~~~~~~
ASM generation compiler returned: 1
<source>:9:6: error: cannot add an enumerator list to a …
Run Code Online (Sandbox Code Playgroud)

c++ enums gcc forward-declaration c++11

9
推荐指数
0
解决办法
121
查看次数

移动 unique_ptr:重置源 vs. 销毁旧对象

我的问题是关于https://en.cppreference.com/w/cpp/memory/unique_ptr中的示例

struct List
{
    struct Node
    {
        int data;
        std::unique_ptr<Node> next;
    };
 
    std::unique_ptr<Node> head;
 
    ~List()
    {
        // destroy list nodes sequentially in a loop, the default destructor
        // would have invoked its `next`'s destructor recursively, which would
        // cause stack overflow for sufficiently large lists.
        while (head)
            head = std::move(head->next);
    }
 
    ...
};
Run Code Online (Sandbox Code Playgroud)

当 时head = std::move(head->next),会发生三件事:

  1. 重置head->nextnullptr
  2. 设置head为新值;
  3. head销毁曾经指向的Node 对象;

上面的代码有效意味着 3 保证在 1 之后发生,否则链接仍然存在。

我想知道是否有一个书面规则来保证这样的顺序,或者它只是一个隐藏的实现细节,并且该示例可以正常工作。

c++ move unique-ptr

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

Xcode 中的“Container View 没有 IBSegueTriggerViewDidLoad 绑定”警告

当右键单击新 Xcode macOS 项目中添加的容器视图时,此警告在“触发的 Segues”部分下可见。这是什么意思?

在此输入图像描述

macos xcode cocoa appkit

5
推荐指数
0
解决办法
166
查看次数

开发框架时如何设置内部 Swift 和 Objective-C 类之间的互操作性

我有一个混合 Objective-C 和 Swift 类的框架,我想在它们之间进行通信,保持 Swift 接口内部(不公开 Swift 类和方法)。有办法实现吗?

PS 请注意,由于它是一个框架项目,因此不能选择使用桥接标头解决方案,因为框架不支持它。

frameworks objective-c ios swift bridging-header

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

我可以在同一线程中的shared_lock和unique_lock之间共享互斥锁吗?

考虑以下函数:

 std::shared_mutex mutex;
 
 void foo() {
     std::shared_lock readLock{ mutex };
     // ...
     // read-only part of the function
     // ...
     {
         std::unique_lock lock{ mutex, std::adopt_lock }
         // ...
         // read/write part
         // ...
     }
     // ... some other read part ...
 }
Run Code Online (Sandbox Code Playgroud)

std::unique_lock最初,该函数的所有部分都只有一个。它工作得很好,但作为优化的一部分,它用 a 包裹了一些部分std::shared_lock。对我来说,它看起来完全合法,但在使用它之后,结果发现一些死锁开始出现(不一定在函数中,但很明显,这种变化是问题的根本原因)

任何人都可以详细说明这种方法是否定义良好以及为什么它会导致出现死锁问题?

c++ multithreading mutex c++17

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

派生类可以重新定义具有不同签名的函数的虚函数吗?

Microsoft文档页面之一中给出了一些奇怪的示例,该示例页面由两个类组成,一个是基类,另一个是派生类。基类具有以下虚拟函数成员:

virtual void setEars(string type)      // virtual function
{
    _earType = type;
}
Run Code Online (Sandbox Code Playgroud)

另一个在派生类中定义,如注释中所述,它重新定义了虚函数:

// virtual function redefined
void setEars(string length, string type)
{
    _earLength = length;
    _earType = type;
}
Run Code Online (Sandbox Code Playgroud)

这两个具有不同的签名,我还从未听说过您是否真的可以用另一个签名的函数重新定义虚拟函数。我编译了此示例,可以发现这两个示例之间的所有替代行为。样本只是误导还是我遗漏了一些东西?

c++ microsoft-documentation

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

如何在列表初始化中添加额外语句?

给定我有一个带有构造函数的类,如下所示:

MClass(const char *t_source);
Run Code Online (Sandbox Code Playgroud)

实际上,有很多地方t_source是从文件中获取的,所以我正在考虑制作另一个构造器,该构造FILE器改为使用指针并将大部分样板放入其中。同时,现有的构造函数本身也有很多用途,并且包含我不想在代码中重复多次的逻辑。我正在考虑委派构造函数,但无法看到如何利用此功能,因为我需要一个以上的语句来从FILE实例中提取数据(例如分配char数组并从中读取FILE并随后删除)。所以本质上我想做这样的事情:

MClass(FILE *t_file) : MClass(MNameSpace::readFile(t_file)) {}
Run Code Online (Sandbox Code Playgroud)

但是要采取一些初步和事后行动。任何的想法?

c++ c++11

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

是否允许占位符作为函数模板返回类型?

考虑以下模板及其专业化:

template<typename R>
R func() {
    return 0;
}

template<>
auto func() {
    std::cout << "Auto deduced" << std::endl;
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

我不确定是否允许这样的声明,但是当使用 Xcode 编译它时,clang 会发出一个奇怪的错误:

template<typename R>
R func() {
    return 0;
}

template<>
auto func() {
    std::cout << "Auto deduced" << std::endl;
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

尽管无法调用专业化,MSVC 仍然可以很好地编译它。是否允许这种专业化?如果允许,如何使用它?

c++ clang visual-c++

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