小编Jea*_*nès的帖子

多继承中构造函数调用的顺序

我试图找到很多,如果只有一个类在多重继承中变成虚拟的话?在这种情况下,构造函数调用的行为对我来说并不清楚.比如说代码 -

#include<iostream>
using namespace std;
class grand{
public:
    grand(){cout<<"grandfather"<<endl;}
};
class parent1:virtual public grand{   //virtual used only here
public:
    parent1(){cout<<"parent1 "<<endl;}
};
class parent2: public  grand{
public:
    parent2(){cout<<"parent2"<<endl;}
};
class child:public parent1,public parent2{
public:
    child(){cout<<"child"<<endl;}
};
int main()  {
    child s;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码的输出如下

grandfather
parent1 
grandfather
parent2
child
Run Code Online (Sandbox Code Playgroud)

但是在上面的代码中如果我们改变这个

class parent1:virtual public grand{
public:
    parent1(){cout<<"parent1 "<<endl;}
};
class parent2: public  grand{
public:
    parent2(){cout<<"parent2"<<endl;}
};
Run Code Online (Sandbox Code Playgroud)

对此

class parent1:public grand{   //virtual removed from here
public:
    parent1(){cout<<"parent1 "<<endl;} …
Run Code Online (Sandbox Code Playgroud)

c++ oop constructor multiple-inheritance

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

getc()作为宏和C标准库函数定义,连贯吗?

[7.1.4库函数的使用]中,我读到:

标题中声明的任何函数可以另外实现为标题中定义的函数式宏...

任何实现为宏的库函数的调用都应扩展为仅对其每个参数进行一次计算的代码...

那么getc,[7.21.7.5 getc函数]:

getc函数等效于fgetc,除非它是作为宏实现的,它可能会多次评估流,因此参数永远不应该是带有副作用的表达式.

定义是getc:

  • 与库函数定义相矛盾?
  • 反过来?
  • 这是标准中的不连贯吗?
  • 或者这是否意味着如果getc单独实现(似乎不符合但是?)作为宏,它可以两次评估其参数?

c macros function libc language-lawyer

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

无用的反斜杠会产生定义明确的字符串常量吗?

既,C和C ++,支持看似等效集等转义序列\b\t\n\"和开始与反斜线字符他人(\)。如果跟随正常字符,如何处理反斜杠?据我从几个编译器中记得,转义字符\被默默地跳过。在 cppreference.com 上,我阅读了这些文章

我只找到了这个关于孤儿反斜杠的注释(在 C 文章中)

如果反斜杠后跟此处未列出的任何字符,则 ISO C 需要诊断:[...]

以上参考表。我还看了一些在线编译器

演示

#include <stdio.h>

int main(void) {
    // your code goes here
    printf("%d", !strcmp("\\ x", "\\ x"));
    printf("%d", !strcmp("\\ x", "\\\ x"));
    printf("%d", !strcmp("\\ x", "\\\\ x"));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

C++ 演示

#include <iostream>
#include <string>
using namespace std;

int main() {
    cout << (string("\\ x") == "\\ x");
    cout << (string("\\ x") …
Run Code Online (Sandbox Code Playgroud)

c c++ portability escaping string-literals

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

我的应用程序在 xcode 11.4 中找不到 sirikit intentdefinition 类

我的应用从出来后就支持了几个 siri 快捷方式,好久没碰了。我的项目在 11.3.2 中编译和构建,但不在 11.4 中。

我得到的错误是应该从我的意图定义文件生成的类,以及我在我的意图处理程序中引用的类不再被找到。

例如,在我的意图定义文件中,我有一个名为“MyStatus”的自定义意图。

然后我有一个 MyStatusIntentHandler:

#import "MyStatusIntent.h"
@interface MyStatusIntentHandler<MyStatusIntentHandling> : NSObject
Run Code Online (Sandbox Code Playgroud)

在 11.4 中,我找不到“MyStatusIntent.h”文件。在 11.3.1 及更早版本中,它构建得很好。

我不太擅长项目配置和结构,所以我有点不知从哪里开始挖掘。如果有人有任何指示,以及 11.4 中的哪些内容可能是新的并给我带来问题,我会全力以赴。

xcode objective-c ios swift sirikit

6
推荐指数
2
解决办法
2527
查看次数

Java8流文件,如何控制文件的关闭?

假设我有一个Java8 Stream<FileReader>,并且使用了该流map,那么如何控制FileReader流中使用的s 的关闭?

请注意,我可能无权访问个人FileReader,例如:

filenames.map(File::new)
    .filter(File::exists)
    .map(f->{
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader(f));
        } catch(Exception e) {}
            return Optional.ofNullable(br);
        })
    .filter(Optional::isPresent)
    .map(Optional::get)
    .flatMap(...something that reads the file contents...) // From here, the Stream doesn't content something that gives access to the FileReaders
Run Code Online (Sandbox Code Playgroud)

在进行了其他一些映射等之后,我最终FileReader在续集中失去了。

我首先认为垃圾收集器可以在需要时执行此操作,但是当filenames它很长时,我已经经历了OS描述符耗尽Stream

java file java-8 java-stream

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

模板函数参数类型中的模板标识符与 decltype

您认为什么更好?

template <typename T> void func(T x,T y) {}
Run Code Online (Sandbox Code Playgroud)

或者

template <typename T> void func(T x,decltype(x) y) {}
Run Code Online (Sandbox Code Playgroud)

恕我直言,第二种形式似乎更可取,因为 x 和 y 类型之间的链接是明确的,并且至少在重命名模板标识符时似乎不太容易出错。

编辑

第二种形式允许您使用第一个参数使用的子类型来调用函数,而第一种形式需要完全相同的类型。这个论点似乎比之前的论点稍微好一些。

c++ templates decltype c++11

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

以编程方式在 TextView 中设置文本对齐方式

在我的应用程序中,我有一个按钮可以创建带有特定消息的 TextView。如何将文本的文本对齐方式设置为 TextView 的右侧?我在 XML 中看到了该属性,但我不知道如何在 Java 中进行操作。

java android textview

5
推荐指数
3
解决办法
7522
查看次数

在O(1)中构造二叉树?

我的朋友在接受采访时被问到这个问题:

生成一个有限但任意大的二叉树O(1).该方法generate()应返回一个二进制树,其大小无限但有限.

在采访之后我们都对它进行了很长时间的考虑,但我们最多只能提出O(n)解决方案.

我们将如何产生O(1)?它甚至可能吗?还有更多的东西吗?

algorithm binary-tree time-complexity

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

如何将此表达式扩展到可调用对象的返回类型?

为什么不能扩展参数类型?

auto lambda = []() { return 'c'; };

template <typename ... Ts>
struct MyClass
{

};

template <typename ... Ts>
void createMyClass(Ts&& ... ts)
{
    /* SUPPOSED TO CREATE MY CLASS WITH THE RETURN VALUES OF THE CALLABLES */
    MyClass< (decltype(std::declval<Ts>()()), ...)> d;

}


int main()
{
    createMyClass(lambda, lambda);

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

decltype(std::declval<Ts>()())应该从调用中获取返回值的类型Ts。然后我尝试通过在它后面执行 , ... 并将其括在括号中来扩展它,这是一个折叠表达式。与我正在寻找的内容本质上等效的是MyClass<return_type1, return_type2, return_type_n>.

"syntax error: ',' was unexpected here  
Run Code Online (Sandbox Code Playgroud)

syntax error: unexpected token '...' following 'statement'  
Run Code Online (Sandbox Code Playgroud)

c++ fold-expression parameter-expansion

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

JFileChooser没有文件名文本字段选项

我有以下Java 8 Swing代码:

JButton button = new JButton("Browse");
button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {

        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setDialogTitle("Choose file as input");
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

        FileNameExtensionFilter filter = new FileNameExtensionFilter("Excel Filter", "xls", "xlsx");
        fileChooser.setFileFilter(filter);

        if (fileChooser.showOpenDialog(mainWindow) == JFileChooser.APPROVE_OPTION) {

            File selection = fileChooser.getSelectedFile();
            createFile(selection);

        }

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

这个想法是,用户选择一个目录,然后键入应用程序将随后创建的文件的名称。但是,当我单击按钮时,这就是我看到的:

在此处输入图片说明

请注意,在没有“ File Name ”文本字段的地方可以输入新文件名吗?我需要更改哪些配置才能获得此功能?

java swing jfilechooser java-8

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