小编Rak*_*111的帖子

什么可以使C++ RTTI不受欢迎?

纵观LLVM文件,他们提到,他们使用"RTTI的自定义窗体",这是他们的原因isa<>,cast<>dyn_cast<>模板功能.

通常,阅读一个库重新实现一种语言的一些基本功能是一种可怕的代码味道,只是邀请运行.但是,这是我们所说的LLVM:这些人正在研究C++编译器 C++运行时.如果他们不知道他们在做什么,我会非常沮丧,因为我更喜欢Mac OS附带clanggcc版本.

尽管如此,由于缺乏经验,我还是想知道正常RTTI的缺陷是什么.我知道它只适用于有v-table的类型,但只提出两个问题:

  • 既然你只需要一个虚拟方法来获得vtable,为什么它们不只是将方法标记为virtual?虚拟析构函数似乎很擅长这一点.
  • 如果他们的解决方案不使用常规RTTI,任何想法如何实现?

c++ rtti llvm

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

结构初始化向量

我想知道如何使用该push_back方法向我的结构向量添加值

struct subject
{
  string name;
  int marks;
  int credits;
};


vector<subject> sub;
Run Code Online (Sandbox Code Playgroud)

那么现在我该如何添加元素呢?

我有函数初始化字符串名称(主题名称)

void setName(string s1, string s2, ...... string s6)
{
   // how can i set name too sub[0].name= "english", sub[1].name = "math" etc

  sub[0].name = s1 // gives segmentation fault; so how do I use push_back method?

  sub.name.push_back(s1);
  sub.name.push_back(s2);
  sub.name.push_back(s3);
  sub.name.push_back(s4);

  sub.name.push_back(s6);

}
Run Code Online (Sandbox Code Playgroud)

函数调用

setName("english", "math", "physics" ... "economics");
Run Code Online (Sandbox Code Playgroud)

c++ struct vector push-back

66
推荐指数
4
解决办法
22万
查看次数

我为什么要使用std :: async?

我正在尝试深入探索新C++ 11标准的所有选项,同时使用std :: async并阅读其定义,我注意到两件事,至少在linux下使用gcc 4.8.1:

  • 它被称为异步,但它有一个真正的"顺序行为",基本上在你调用与异步函数foo相关的未来的行中,程序会阻塞,直到执行foo它完成.
  • 它取决于与其他人完全相同的外部库,以及更好的非阻塞解决方案,这意味着pthread,如果你想使用std::async你需要pthread.

在这一点上,我很自然地问为什么选择std :: async甚至是一组简单的仿函数?这是一个根本无法扩展的解决方案,您调用的未来越多,您的程序响应就越少.

我错过了什么吗?你能展示一个被授予以异步,非阻塞方式执行的例子吗?

c++ asynchronous future c++11 stdasync

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

以下基于范围的for循环内幕后面的列表是什么?

我正在学习C++,我看到了一个for像这样的基于范围的循环:

for (int i : {1,2,3,4,5})
    std::cout << i << ' ';
Run Code Online (Sandbox Code Playgroud)

{1,2,3,4,5}幕后for循环的临时性是什么?

c++ for-loop

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

无法解决:com.android.support.design:25.4.0

我将以下行添加到build.gradle(Module:app):

compile 'com.android.support:design:25.4.0' 
Run Code Online (Sandbox Code Playgroud)

但是当我执行Gradle时,我正在接受

Failed to resolve: com.android.support.design:25.4.0
Run Code Online (Sandbox Code Playgroud)

我从android 支持设计库获得了支持代码并将其添加到新项目中.我将其添加到依赖项部分:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:design:25.4.0'
}
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何想法?

android gradle android-gradle-plugin

63
推荐指数
5
解决办法
7万
查看次数

什么是静态构造函数?

我在接受采访时问过这个问题:

什么是静态构造函数?

它存在于C++中吗?如果是,请举例说明.

c++

62
推荐指数
4
解决办法
5万
查看次数

何时使用addressof(x)而不是&x?

我如何决定是否需要addressof(x)而不是&x在获取对象的地址时?


似乎这个问题令人困惑,所以需要澄清:

addressof显然绕过了重载的地址运算符.我已经意识到了这一点.

我想知道的是:
我怎么知道这是不是我真的想做什么?(特别是在模板内部等)

是否有某种"规则"可以帮助我找出什么时候需要addressof而不是&
毕竟,他们都返回对象的"地址",那么我什么时候使用哪个?

c++ addressof

60
推荐指数
5
解决办法
7324
查看次数

允许运行时没有动态分配的数组大小?

我已经使用C++几年了,今天我看到了一些代码,但这怎么能完全合法呢?

int main(int argc, char **argv)
{
    size_t size;
    cin >> size;
    int array[size];
    for(size_t i = 0; i < size; i++)
    {
        array[i] = i;
        cout << i << endl;
    }

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

根据海湾合作委员会编制.

如何在没有new或没有运行时确定大小malloc

只是为了仔细检查,我用谷歌搜索了一些和我的所有类似的代码声称存储大小错误.

甚至Deitel的C++如何编程p.共同编程错误4.5下的261个状态:

只有常量可用于声明自动和静态数组的大小.

给我看.

c c++ array-initialization

58
推荐指数
4
解决办法
4万
查看次数

返回无效的有效代码?

我发现以下代码被Visual C++ 2008和GCC 4.3编译器接受:

void foo()
{

}

void bar()
{
  return foo();
}
Run Code Online (Sandbox Code Playgroud)

它编译时我有点惊讶.这是语言功能还是编译器中的错误?C/C++标准对此有何看法?

c c++

56
推荐指数
3
解决办法
7934
查看次数

如何从整数转换为字符串?

我无法编译将类型从整数转换为字符串的代码.我正在运行Rust for Rubyists教程中的一个示例,该教程具有各种类型转换,例如:

"Fizz".to_str()num.to_str()(其中num是整数).

我认为这些to_str()函数调用的大部分(如果不是全部)都已被弃用.将整数转换为字符串的当前方法是什么?

我得到的错误是:

error: type `&'static str` does not implement any method in scope named `to_str`
error: type `int` does not implement any method in scope named `to_str`
Run Code Online (Sandbox Code Playgroud)

string int type-conversion rust

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