小编Roh*_*bhu的帖子

为什么Qt不使用异常处理?

我一直想知道,由于Qt几乎使用了标准中的所有C++特性,并且以一种奇妙和创新的方式,并且每当它不使用特定功能时,它都有一个完全有效和适用的原因.在这种情况下,为什么没有Qt类使用throw关键字和throw任何例外?他们try ... catch在我们的Qt编写代码中不需要阻塞的原因是什么?

就我个人而言,我自己也不喜欢它并且从不使用它,无论我是否正在使用Qt并始终使用错误代码并返回值而不是抛出异常对象.但为什么我不在他们的文档中看到QException类?Qt开发人员对此有何看法?

qt

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

将子域重定向到端口[nginx/flask]

我知道这是一个常见的问题,并且有相同的答案,但我问这个问题的原因是因为我不知道如何处理解决方案.根据我决定的方式,我可以选择改变的解决方案.无论如何,

我有一个AWS EC2实例.我的DNS由Route53处理,我拥有example.com.目前,在我的实例上,有两个服务正在运行:

example.com:80 [nginx/php/wordpress]
example.com:8142 [flask]
Run Code Online (Sandbox Code Playgroud)

我想做的是,app.example.com指出example.com:8142.我该怎么做呢?我很确定我将不得不指向app.example.com相同的IP example.com,因为它将是服务它的同一个盒子.而且,nginx将是第一个在端口80处理这些请求的人.有没有办法让nginx将所有请求转发给localhost:8142?

有没有更好的方法可以解决这个问题?

nginx

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

不能在插件块中使用项目额外的属性

我有一个多项目构建,而且我经常发现自己锁定了所有工件的版本。所以在我的根项目中,我定义了类似的东西:

project.extra.set("pkgVersions", mapOf(
    "kotlin" to "1.2.0",
    "jooq" to "3.10.2"
))

val pkgVersions : Map<String, String> by project.extra

plugins {
    base
    kotlin("jvm") version "1.2.0" apply false
}
Run Code Online (Sandbox Code Playgroud)

虽然我可以pkgVersions在任何地方使用,包括其他子项目:

val pkgVersions by rootProject.extra

jooq {
    version = pkgVersions["jooq"]
}
Run Code Online (Sandbox Code Playgroud)

我无法在插件块中这样做:

plugins {
    kotlin("jvm") version pkgVersions["kotlin"]
}
Run Code Online (Sandbox Code Playgroud)

给我错误“隐式接收器无法在此上下文中调用 pkgVersions。如果需要,请使用显式一个”。我假设这是因为隐式接收器应该是文件的 JVM 印象?但它正在使用PluginDependencySpec. 尝试使用this@仅显示的自动完成this@plugin。这只是我的一个长期猜测。但是,关于我应该做什么的任何指示?

另外,虽然我们是在它,有没有一种方法来创建一个全球型gradle-kotlin-dsl,例如:

data class MyBuildType(..)
Run Code Online (Sandbox Code Playgroud)

并且在不使用的情况下随处可用buildSrc?它非常简单,buildSrc我不介意使用它,但只是想知道。

gradle-kotlin-dsl

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

tsql脚本将删除级联添加到现有表

是否有一个脚本可用于启用现有表的级联删除.谢谢.

sql t-sql sql-server cascade cascading-deletes

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

模板和嵌套类/结构

我有一个简单的容器:

template <class nodeType> list {
    public:
        struct node {
            nodeType info;
            node* next;
        };

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

现在,有一个函数被调用_search,它搜索列表并返回对匹配的节点的引用.现在,当我指的是函数的返回类型时,我认为它应该是list<nodeType>::node*.这是正确的吗?当我定义函数内联时,它完美地工作:

template <class nodeType> list {
    public:
        struct node {
            nodeType info;
            node* next;
        };

        node* _search {
            node* temp;
            // search for the node
            return temp;
        }
};
Run Code Online (Sandbox Code Playgroud)

但是,如果我在课外定义函数,

template <class nodeType> list<nodeType>::node* list<nodeType>::_search() {
    //function
}
Run Code Online (Sandbox Code Playgroud)

它不起作用.编译器给出了错误说法Expected constructor before list<nodeType>::_search或其他内容.错误与此类似.我目前没有可以测试它的机器.

任何帮助都是真诚的感谢.

c++ containers templates data-structures

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

Kotlin生成构造函数,将默认值设置为无效参数

我们来看一个数据类的类:

data class User(
    val userNumber: Int = -1,
    val name: String,
    val userGroups; List<String> = emptyList(),
    val screenName: String = "new-user"
)
Run Code Online (Sandbox Code Playgroud)

从Kotlin调用此函数时,它非常简单.我可以简单地使用命名参数语法来实现.从Java调用,我必须指定所有值,或使用@JvmOverloads注释,它生成以下构造函数(除了kotlin使用bit-mask为默认值生成的构造函数):

User(int userNumber, @NotNull String name, @NotNull List userGroups,
     @NotNull String screenName)
User(int userNumber, @NotNull String name, @NotNull List userGroups)
User(int userNumber, @NotNull String name)
User(@NotNull String name)
Run Code Online (Sandbox Code Playgroud)

现在,如果我想User在Java中创建一个等价的对象,User(name="John Doe", userGroups=listOf("admin", "super")我就无法使用上面的构造函数.但是,如果我val userNumber: Int = -1data class声明中放入最后(构造函数的生成似乎取决于定义可选参数的顺序),我可以这样做.这很好,因为期望kotlin生成所有排列会使某些类严重膨胀.

工具的最大问题就是Jackson根本不起作用,因为他们不知道使用哪个构造函数(而不是像我可以特别注释其中一个生成的构造函数).

那么,有没有办法生成(单)构造函数,如:

User(Integer userNumber, String name, List<String> userGroups, …
Run Code Online (Sandbox Code Playgroud)

kotlin

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

qmake:没有符号链接和'lib'前缀的构建库

我的应用程序中需要一个非常简单的机制,我的项目被构建为共享库'.so'或'.dll',但我想要的是:

ExampleAppOne.so
Run Code Online (Sandbox Code Playgroud)

我明白了:

libExampleAppOne.so -> libExampleAppOne.so.1.0.0
libExampleAppOne.so.1 -> libExampleAppOne.so.1.0.0
libExampleAppOne.so.1.0 -> libExampleAppOne.so.1.0.0
Run Code Online (Sandbox Code Playgroud)

我甚至不想要'lib'前缀.在.pro文件中,我所能做的就是更改INSTALLS变量(这是因为我的第三个要求是在特定目录中构建库).

另外,我有第四个相关要求:当我要求QLibrary加载库时,我希望它专门搜索一个非常特定的路径中的库和一个与给定的EXACT名称相匹配的库.没有"lib"前缀匹配,没有"版本字符串"搜索,没有查看LD_LIBRARY_PATH ...

任何帮助表示赞赏.

问候,罗恩

c++ qt qmake libraries

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

找不到org.json.JSONObject

我正在开发一个使用该org.json.JSONObject包的Java项目.但是,每当我在eclipse中使用它时,它都说没有找到这样的包.然而,当我在android上开发即在eclipse中创建一个新的Android项目时,我可以在不做任何事情的情况下使用它(不添加外部JAR和东西),所以我很确定所需的JAR在我的机器上.

但是,在我的整个文件系统上搜索"org.json","*json*jar","json*jar"并没有返回任何内容.

java eclipse classpath org.json

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

无法使用 kotlin 和 dagger 注入多重绑定

我有以下定义:

@Module
class WeaverDataModule {
    // Provide the three pumps from providers
    // All of them still explicitly mark 'Pump' as their return type
    @Provides @IntoSet fun providesPump(thermosiphon: Thermosiphon) : Pump = thermosiphon
    @Provides @IntoSet fun providesAnotherPump(suctionBased: SuctionBased) : Pump = suctionBased
    @Provides @IntoSet fun providesGenericPump(genericPump: GenericPump) : Pump = genericPump
}

@Component(modules = [WeaverDataModule::class])
interface WeaverData {
    // Get the CoffeeMaker
    fun coffeeMaker(): CoffeeMaker
    // Get the list of pumps
    fun getPumps() : Set<Pump>
}

interface Pump

// The …
Run Code Online (Sandbox Code Playgroud)

kotlin dagger-2

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

链接器错误"未解析的外部符号":使用模板

我有一个基于模板的类[Allotter.h和Allotter.cpp]:

template <typename allotType> class Allotter {
public:
 Allotter();
 quint32 getAllotment(allotType*);
 bool removeAllotment(quint32, int auto_destruct = 0);

private:
 QVector<QPair<quint32, allotType*>> indexReg;
 int init_topIndex;
};
Run Code Online (Sandbox Code Playgroud)

它的用法显示为[ActiveListener.h和ActiveListener.cpp]:

class ActiveListener: public QObject {
 Q_OBJECT

public:
 ActiveListener();

private slots:
    void processConnections();
    void readFromSocket(int);

private:
 QTcpServer* rootServer;
 QSignalMapper* signalGate;
 Allotter<QTcpSocket> TcpAllotter;
};
Run Code Online (Sandbox Code Playgroud)

我没有显示完整的定义,因为它并不重要.问题是当我编译时,所有文件都正确编译.这些文件位于VC++项目中.早些时候,当我没有使用基于模板的方法时Allotter,一切都在编译和链接很好.但是现在,我收到了这个错误:

1>ActiveListener.obj : error LNK2019: unresolved external symbol "public: __thiscall Allotter<class QTcpSocket>::Allotter<class QTcpSocket>(void)" (??0?$Allotter@VQTcpSocket@@@@QAE@XZ) referenced in function "public: __thiscall ActiveListener::ActiveListener(void)" (??0ActiveListener@@QAE@XZ)
1>ActiveListener.obj : error LNK2019: unresolved external symbol "public: unsigned int …
Run Code Online (Sandbox Code Playgroud)

c++ templates qt4 linker-errors visual-c++

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