小编Mat*_*reu的帖子

设计支持库 - SDK v21使用的版本

我有问题了解支持库的版本方案以及何时使用哪个版本.目前我有一个项目compileSdkVersion 21,minSdkVersion 21并且targetSdkVersion 21想要使用android设计支持库.当我使用com.android.support:design:22.2.0项目编译但我收到Gradle警告时:

"This support library should not use a different version (22) than the `compileSdkVersion` (21)". 
Run Code Online (Sandbox Code Playgroud)

当我使用时,com.android.support:design:23.0.1我得到一些编译错误,如:

"Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Run Code Online (Sandbox Code Playgroud)

我想我总是可以使用最高版本的支持库,只要compileSdkVersion它更低或相等,但这似乎是错误的.

在针对API级别21进行编译时,我可以使用设计支持库吗?

android android-support-library android-design-library android-support-design

20
推荐指数
2
解决办法
3万
查看次数

静态类成员的初始化.为什么constexpr?

当我想要一个静态指针作为我需要constexpr进行初始化的类的成员时nullptr.

class Application {
    private:
        constexpr static Application* app = nullptr;
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释我为什么需要这样做吗?我无法找到为什么静态变量必须在编译时存在的确切原因.

c++ initialization static-members constexpr c++11

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

int to void *-避免使用C样式转换?

我需要将int(指定一个字节偏移量)强制转换为const void*。真正适合我的唯一解决方案是c样式强制转换:

int offset = 6*sizeof(GLfloat);
glVertexAttribPointer(1,3,GL_FLOAT,GL_FALSE,0,(void*)offset);
Run Code Online (Sandbox Code Playgroud)

我想摆脱c风格的转换,但找不到有效的解决方案。我试过了

static_cast<void*>(&offset)
Run Code Online (Sandbox Code Playgroud)

并进行编译,但这不是正确的解决方案(此方法的整体输出有所不同)。正确的解决方案是什么?

链接至的文档glVertexAttribPointer链接

c++ opengl pointers casting void-pointers

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

Matlab-为每个零矩阵元素查找最接近的非零元素的索引

在Matlab中,我有一个矩阵,其中某些元素设置为零。例如:

0 1 0 0 0
2 5 0 3 0
0 0 0 0 0
0 5 0 2 1
Run Code Online (Sandbox Code Playgroud)

对于每个为零的矩阵元素,我想找到不为零的最近元素的索引。如果可能有多个索引,则应全部返回。这可能是一个聪明的解决方案,如何避免很多for-loop问题?

matlab matrix nearest-neighbor

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

VARIANT结构(COM)似乎没有成员

使用Visual Studio 2015 RC和Windows SDK 7.1以及这个简单的DirectShow代码(带有COM的C++)

#include <dshow.h>
#include <iostream>

int main ()
{
    CoInitialize(nullptr);


    ICreateDevEnum* devEnum = nullptr;
    CoCreateInstance(
        CLSID_SystemClock,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_ICreateDevEnum,
        reinterpret_cast<void**>(devEnum)
    );

    IEnumMoniker* monikerEnum = nullptr;
    devEnum->CreateClassEnumerator(
        CLSID_VideoInputDeviceCategory,
        &monikerEnum,
        0
    );

    IMoniker* moniker = nullptr;
    ULONG fetchedCount = 0;

    while (monikerEnum->Next(1, &moniker, &fetchedCount))
    {
        IPropertyBag* propBag = nullptr;
        moniker->BindToStorage(0, 0, IID_IPropertyBag, reinterpret_cast<void**>(propBag));

        VARIANT var;
        VariantInit(&var);

        propBag->Read(L"FriendlyName", &var, nullptr);

        std::cout << var.bStrVal;

        VariantClear(&var);
    }
}
Run Code Online (Sandbox Code Playgroud)

导致:

错误C2039:'bStrVal':不是'tagVARIANT'的成员

tagVARIANT结构被定义为:

typedef /* [wire_marshal] */ struct tagVARIANT VARIANT; …
Run Code Online (Sandbox Code Playgroud)

c++ com directshow variant visual-studio-2015

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