小编Ric*_*ers的帖子

协变返回类型,常量和不完整的类

此代码在g ++ 6.1下成功编译,但在clang 3.8中出错:

class C;

class Base {
public:
  virtual const C *getC();
};

class Derived : public Base {
public:
  virtual       C *getC();
};
Run Code Online (Sandbox Code Playgroud)

clang的错误如下:

$ dev/compilers/linux-x86_64-2.12.2/clang3.8/bin/clang++ -Wall -c testcovariantreturn.cxx
testcovariantreturn.cxx:10:20: error: return type of virtual function 'getC' is not covariant with the return type of the function it overrides ('C' is incomplete)
Run Code Online (Sandbox Code Playgroud)

如果完全定义了C类而不是前向声明,则没有错误.我的理解是,当覆盖虚方法时,协变允许"较小"的cv限定(即,从返回类型中删除const).

clang是否正确/允许需要完整类型,如果是,为什么?怎么可以在这里改变C的定义呢?

这不是完全学术性的,在大型代码库中我不愿意添加不必要的包含,我们尝试将声明转发为标准实践.

c++ covariance

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

使用css反转svg图像?

我正在尝试使用.svg扩展名反转图像文件css.我知道.png,.jpg文件可以使用css webkit属性反转.我是新的svg图像.是否可以.svg使用css?反转图像?

我试过用

-webkit-filter:invert(1);
        filter:invert(1);
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

css svg image css-filters

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

如何识别USB设备?

是否可以通过唯一标识符识别USB设备,例如操作系统具有Mac-ID,硬盘ID,以太网卡ID是否具有唯一标识符?我知道可以轻松更改USB分区的卷序列号,也可以在用户格式化时更改.

但是有ID可以使用WMI服务通过MFC(Visual C++或C#)检索某种"USB硬盘ID或USB硬件ID"吗?这样的标识符对于物理设备是否是唯一的?请澄清......

usb usbserial usb-drive visual-c++ usb-flash-drive

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

有什么区别 - 1)预处理器,链接器,2)头文件,库?我的理解是否正确?

好的,直到今天早上我才对这些术语感到困惑.我想我有所不同,希望如此.

首先,令人困惑的是,由于预处理器已将头文件包含在包含函数的代码中,因此链接器链接到汇编器/编译器生成的目标文件的库函数是什么?部分混淆主要是由于我对头文件和库之间的差异的无知而产生的.

经过一段谷歌搜索和堆栈溢出(就是术语?:p),我收集到头文件主要包含函数声明,而实际的实现是在另一个称为库的二进制文件中(我仍然不是100%)确定这个).

所以,假设在以下程序中: -

#include<stdio.h>
int main()
{
      printf("whatever");
      return 0;
}
Run Code Online (Sandbox Code Playgroud)

预处理器包括代码中头文件的内容.编译器/编译器+汇编器完成其工作,然后最终链接器将此目标文件与另一个实际存储方式printf()工作的目标文件组合在一起.

我的理解是正确的吗?我可能会离开...你能帮我吗?

编辑:我一直想知道C++ STL.它总是让我困惑的是它究竟是什么,所有这些标题的集合或什么?在阅读完回复之后,我可以说STL是一个目标文件/类似于目标文件的东西吗?

还有,我觉得在那里我可以读的像函数的函数定义pow(),sqrt()等等等等,我会打开头文件,而不是发现什么.那么,库中的函数定义是否是二进制不可读的形式?

c compiler-construction linker preprocessor header-files

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

在C++中正确使用sqlite3的回调函数

我有以下C++代码与SQLite3一起用于测试目的.它是一个customer声明了回调函数的类.只要sqlite3_exec()从SQLite数据库返回结果(记录),就会调用此回调函数.

我不喜欢这种结构的是,处理结果的源代码位于类之外的回调函数中,而不是由sqlite3_exec()调用的类方法处理的结果.

在回调函数完成从SQL查询结果中提取值之后,我可以使用将在类方法中使用的全局变量.但是如果有多个记录并且多次调用回调函数会怎么样呢.然后我需要使用数组,除非我确保我只有单个结果.

我是否需要忘记回调函数并深入调用SQLite API?

或者我是否需要转到C++包装器,我想那里没有回调机制,结果会传递回类方法本身?

// customer
#include "Customer\customer.h"
//## begin module%50E6CCB50119.additionalDeclarations preserve=yes
static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
  int i;
  char* columnName;
  char* columnValueString;
  short int columnValueShortInt = 0;
  int columnValueInt = 0;

  cout << "begin of callback function\n";

  for(i=0; i<argc; i++)
  {
    columnName = azColName[i];
    if (strcmp(columnName, "FirstName")==0 || strcmp(columnName, "LastName")==0)
    {
      columnValueString = argv[i];
      cout << "columnName = " << columnName << "; value = …
Run Code Online (Sandbox Code Playgroud)

c++ sqlite

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

如何在Android对话框的XML布局文件中指定正确的对话框大小?

我使用XML布局文件创建了一个android对话框,如下所示:

  final Dialog dialog = new Dialog(this);
        dialog.setContentView(R.layout.enabledialog);
        dialog.setTitle("Define message keys and setup");

        Switch locationSwitch = (Switch) dialog.findViewById(R.id.locationSwitch);
        Switch blareSwitch = (Switch) dialog.findViewById(R.id.blareSwitch);

        final EditText locationEdit = (EditText) dialog.findViewById(R.id.locationEdit);
        final EditText blareEdit = (EditText) dialog.findViewById(R.id.blareEdit);

        WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
        lp.copyFrom(dialog.getWindow().getAttributes());
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        lp.height = WindowManager.LayoutParams.MATCH_PARENT;

        dialog.show();

        dialog.getWindow().setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)

但是,我的XML文件的内容只占用屏幕的一半,所以当我显示对话框时,我显示额外的空间,这看起来不太好看:

这里是对话框如何看的草图(R.layout.enabledialog):

在此输入图像描述

如何修剪这个额外的空间?在android studio中,布局编辑器假设XML文件占据整个屏幕,但实际上,我只想要一个小的弹出窗口.

谢谢,

Ruchir


编辑:这是我的布局资源文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#1dd1e9">


    <Switch
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/locationSwitch"
        android:layout_marginTop="46dp"
        android:checked="false"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Blah"
        android:id="@+id/textView" …
Run Code Online (Sandbox Code Playgroud)

java xml string performance android

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

CoAP和DTLS集成

我实现了CoAP(libcoap)和DTLS(tinyDTLS)的实现.如何使用DTLS(tinyDTLS)进行集成CoAP(libcoap)?

我会很感激任何建议.

network-protocols dtls coap iot libcoap

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

在CSS中反转高度方向

我想将自上而下的高度增长路径更改为Down-top它是否可以在CSS中使用?这是我的代码
http://jsfiddle.net/yasharshahmiri/1pkemq1p/3/

        .buttom{
margin-top:200px;
margin-right:34px;
width:150px;
height:45px;
background:black;
float:right;
transition-duration:2s;  }
    .buttom:hover{
        height:180px;
        transition-duration:2s;}
Run Code Online (Sandbox Code Playgroud)

html css height direction

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

单元测试python时有多个异常和代码覆盖

问题:

以下是受测试代码的仿制示例:

from datetime import datetime

def f(s):
    try:
        date = s.split(":")[1]
        return datetime.strptime(date, "%Y%m%d")
    except (ValueError, IndexError) as e:
        # some code here
        raise
Run Code Online (Sandbox Code Playgroud)

这是我目前拥有的一组测试:

from datetime import datetime
import unittest

from test_module import f

class MyTestCase(unittest.TestCase):
    def test_valid_date(self):
        self.assertEqual(f("1:20130101"), datetime(2013, 1, 1))

    def test_invalid_date(self):
        self.assertRaises(ValueError, f, "1:invalid")
Run Code Online (Sandbox Code Playgroud)

测试通过,如果我用--branch旗帜运行覆盖,我会得到100%的线和分支覆盖:

$ coverage run --branch -m unittest test
..
----------------------------------------------------------------------
Ran 2 tests in 0.003s

OK
$ coverage report
Name            Stmts   Miss Branch BrPart  Cover
--------------------------------------------
test_module.py …
Run Code Online (Sandbox Code Playgroud)

python testing unit-testing code-coverage coverage.py

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

如何检查 RecyclerView 的第一项是否在屏幕上可见

是否可以检查RecyclerView用户屏幕上的第一项或第二项是否可见?

例如当用户向下滚动时:

  if (first item not visible to user)  { 
      // do something
  }
  else if ( first item is visible){
      // do something
  }
Run Code Online (Sandbox Code Playgroud)

我目前所做的是向我的回收器添加一个侦听器,以便当用户向下滚动时,它会执行某些操作并向上滚动。

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        if (dy > 0) {
            mAccountLayout.setVisibility(View.GONE);
            mDateLayout.setVisibility(View.GONE);
            Log.d("SCROLLINGDOWN","SCROLL");
        } else {
            mAccountLayout.setVisibility(View.VISIBLE);
            mDateLayout.setVisibility(View.VISIBLE);
            Log.d("SCROLLINGUP","SCROLL");
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

但我需要的是检查第一项是否可见。

android android-recyclerview

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