小编Daw*_*ozd的帖子

为内联函数定义多次,怎么可能?

以下来自 C++ 入门书的引用让我很困惑

与其他函数不同,内联函数和 constexpr 函数可以在程序中定义多次。毕竟,编译器需要定义,而不仅仅是声明,才能扩展代码。但是,给定 inline 或 constexpr 的所有定义必须完全匹配。因此,内联函数和 constexpr 函数通常在标头中定义。-- C++ 入门第 5 版,240 页

“可能在程序中定义多次”这句话让我很困惑。据我了解,声明可以多次,但定义只需要一次。

有人可以举个例子为什么有多重定义吗?

c++ linker compiler-errors inline

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

扩展初始化列表和数组

我有简单的功能,如:

void fun(vector<int> vec)
{
//...
}

void fun(int* smth)
{
//...
}
Run Code Online (Sandbox Code Playgroud)

当我在我的程序中写字时没有.

fun({2,3});
Run Code Online (Sandbox Code Playgroud)

它让我觉得有趣的矢量参数我知道它是在新的C++扩展初始化列表中,但我想使用新的C++并告诉编译器这只是一个int的数组我怎么能这样做?

编辑:

在1行中做它会很好:)

c++ arrays initializer-list c++11

5
推荐指数
2
解决办法
4627
查看次数

由于libjsoncpp0,travis上的Clang 6中断

由于以下问题,我们构建的travis ci已损坏:

The following packages have unmet dependencies:
 clang-6.0 : Depends: libjsoncpp0 (>= 0.6.0~rc2) but it is not installable
E: Unable to correct problems, you have held broken packages.
apt-get.diagnostics
apt-get install failed
Run Code Online (Sandbox Code Playgroud)

sudo apt install libjsoncpp0libjsoncpp0存在,不存在 而且我也尝试过sudo apt install libjsoncpp-dev成功,但是并不能解决问题。

如何libjsoncpp0在travis上安装?

构建日志travis.yml

c++ clang travis-ci

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

为什么Java中的时代不同

我想知道为什么这段代码会返回不同的时间:

我的输出是:

Time1: 511 Time2: 228 for N: 100000000
Time1: 509 Time2: 229 for N: 100000001
Time1: 503 Time2: 229 for N: 100000002
Run Code Online (Sandbox Code Playgroud)

我有:

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)
Intel® Pentium(R) CPU B960 @ 2.20GHz × 2 
Linux Ubuntu 12.04
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像:

public class test {

    public static void main(String[] arg)
    {
        for(long N=100000000;N<2000000000;++N){

            long time2 = System.currentTimeMillis();
            double d = 1.0; 
            double z = 1.0/3.0;
            for(long i = 0; …
Run Code Online (Sandbox Code Playgroud)

java

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

通过引用传递变量并构造新对象

你好,我有下面这样的代码,我不知道为什么它不起作用.

class Clazz2;
class Clazz
{
    public:
    void smth(Clazz2& c)
    {

    }

    void smth2(const Clazz2& c)
    {

    }
};

class Clazz2
{
    int a,b;
};

int main()
{
    Clazz a;
    Clazz2 z;
    a.smth(z);
    //a.smth(Clazz2()); //<-- this doesn't work
    a.smth2(Clazz2()); // <-- this is ok
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我有编译错误:

g++ -Wall -c "test.cpp" (in directory: /home/asdf/Desktop/tmp)
test.cpp: In function ‘int main()’:
test.cpp:26:17: error: no matching function for call to ‘Clazz::smth(Clazz2)’
test.cpp:26:17: note: candidate is:
test.cpp:5:7: note: void Clazz::smth(Clazz2&)
test.cpp:5:7: note:   no …
Run Code Online (Sandbox Code Playgroud)

c++ reference

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