Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

5
我什么时候应该使用std :: thread :: detach?
有时我必须使用它std::thread来加速我的应用程序。我也知道join()等到线程完成。这很容易理解,但是调用detach()和不调用有什么区别? 我以为如果没有detach(),线程的方法将独立使用线程工作。 不分离: void Someclass::Somefunction() { //... std::thread t([ ] { printf("thread called without detach"); }); //some code here } 调用与分离: void Someclass::Somefunction() { //... std::thread t([ ] { printf("thread called with detach"); }); t.detach(); //some code here }
140 c++  c++11  stdthread 

11
使用“ for”循环遍历C ++ Vector
我是C ++语言的新手。我已经开始使用向量,并且注意到在我看到的所有代码中都通过索引迭代向量,for循环的第一个参数始终是基于向量的。在Java中,我可以使用ArrayList做类似的事情: for(int i=0; i < vector.size(); i++){ vector[i].doSomething(); } 有没有我在C ++中看不到的原因?这是不好的做法吗?

12
用户定义的文字为C ++添加了哪些新功能?
C ++ 11台引入了用户定义的文字,这将允许基于现有字面引入新文本语法的(int,hex,string,float),使得任何类型的将能够具有字介绍。 例子: // imaginary numbers std::complex<long double> operator "" _i(long double d) // cooked form { return std::complex<long double>(0, d); } auto val = 3.14_i; // val = complex<long double>(0, 3.14) // binary values int operator "" _B(const char*); // raw form int answer = 101010_B; // answer …

6
私有纯虚函数的意义是什么?
我在头文件中遇到以下代码: class Engine { public: void SetState( int var, bool val ); { SetStateBool( int var, bool val ); } void SetState( int var, int val ); { SetStateInt( int var, int val ); } private: virtual void SetStateBool(int var, bool val ) = 0; virtual void SetStateInt(int var, int …

4
为什么可以在私有类型上使用auto?
我惊讶地发现以下代码可以编译并运行(vc2012&gcc4.7.2) class Foo { struct Bar { int i; }; public: Bar Baz() { return Bar(); } }; int main() { Foo f; // Foo::Bar b = f.Baz(); // error auto b = f.Baz(); // ok std::cout << b.i; } 这段代码编译正确吗?为什么正确呢?为什么我auto不能使用它的名称(如预期的那样)而使用私有类型?

3
有效的C ++仍然有效吗?
从我在这篇文章中看到的内容,我决定开始阅读《有效的C ++》一书。 但是,由于C ++ 11带来了许多新功能,并且一些良好实践发生了变化,所以我不确定这是否是一个好主意。C ++ 11的出现是否已淘汰有效C ++中包含的任何建议?如果是这样,我应该避免哪些主题?

30
java.lang.ClassNotFoundException:在路径dexpathlist上找不到类
我目前正在一个项目中,我必须使用纯本地ndk。当我尝试从Irrlicht引擎源运行helloworld示例时,它起作用了。然后,按照该示例的相同格式尝试在我的项目中使用它。但是我得到了: 03-14 01:40:05.308: E/AndroidRuntime(799): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/android.app.POMActivity}: java.lang.ClassNotFoundException: Didn't find class "android.app.POMActivity" on path: DexPathList[[zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]] 在运行我的项目时。 这是我的main.cpp文件: #include <android/log.h> #include <jni.h> #include <android_native_app_glue.h> #include "android_tools.h" #ifdef _IRR_ANDROID_PLATFORM_ void android_main(android_app* app) { __android_log_print(4 , "pom" , "nothing"); } #万一 在Android.mk中: LOCAL_PATH := $(call my-dir)/.. IRRLICHT_PROJECT_PATH …
139 java  android  c++  android-ndk 

2
CMake:带有单元测试的项目结构
我正在尝试构建项目以包括生产源(在src子文件夹中)和测试(在test子文件夹中)。我正在使用CMake构建它。作为最小的示例,我具有以下文件: CMakeLists.txt: cmake_minimum_required (VERSION 2.8) project (TEST) add_subdirectory (src) add_subdirectory (test) src / CMakeLists.txt: add_executable (demo main.cpp sqr.cpp) src / sqr.h #ifndef SQR_H #define SQR_H double sqr(double); #endif // SQR_H src / sqr.cpp #include "sqr.h" double sqr(double x) { return x*x; } src / main.cpp-使用sqr,并不重要 测试/CMakeLists.txt: find_package(Boost COMPONENTS system filesystem …


1
C ++:变量“ std :: ifstream ifs”具有初始化程序,但类型不完整
很抱歉,如果这有点笨拙,但是我对C ++还是很陌生。我正在尝试打开文件并使用读取它ifstream: vector<string> load_f(string file) { vector<string> text; ifstream ifs(file); string buffer, str_line; int brackets = 0; str_line = ""; while ( getline(ifs, buffer) ) { buffer = Trim( buffer ); size_t s = buffer.find_first_of("()"); if (s == string::npos) str_line += "" + buffer; else { while ( s != …
139 c++  fstream  return-type 


5
围绕另一个点旋转一个点(2D)
我正在尝试制作纸牌散开的纸牌游戏。现在使用具有功能的Allegro API来显示Im: al_draw_rotated_bitmap(OBJECT_TO_ROTATE,CENTER_X,CENTER_Y,X ,Y,DEGREES_TO_ROTATE_IN_RADIANS); 因此,我可以轻松制作自己的歌迷效果。然后问题是知道鼠标在哪个卡下面。为此,我想到了进行多边形碰撞测试。我只是不确定如何旋转卡上的4个点以构成多边形。我基本上需要执行与Allegro相同的操作。 例如,卡的4点是: card.x card.y card.x + card.width card.y + card.height 我需要一个类似的功能: POINT rotate_point(float cx,float cy,float angle,POINT p) { } 谢谢
139 c++  algorithm 


2
我如何处理移出的物体?
该标准是否精确定义了对象从对象移出后可以做什么?我曾经认为,对移出的对象可以做的只是破坏它,但这还不够。 例如,采用swap标准库中定义的功能模板: template <typename T> void swap(T& a, T& b) { T c = std::move(a); // line 1 a = std::move(b); // line 2: assignment to moved-from object! b = std::move(c); // line 3: assignment to moved-from object! } 显然,必须可以将其分配给移出的对象,否则第2行和第3行将失败。那么我还能对移出的对象做什么呢?我在哪里可以在标准中找到这些详细信息? (顺便说一句,为什么T c = std::move(a);不是T c(std::move(a));第1行呢?)

10
我应该在成员数据中使用指针还是引用?
这是一个简化的示例来说明问题: class A {}; class B { B(A& a) : a(a) {} A& a; }; class C { C() : b(a) {} A a; B b; }; 所以B负责更新C.我的一部分跑通过棉绒的代码并将其whinged关于参考构件:棉绒#1725。这是关于照顾默认拷贝和分配的,这很公平,但是默认拷贝和分配对于指针也很不利,因此那里没有什么好处。 我总是尝试使用引用,因为裸露的指针不确定地介绍了谁负责删除该指针。我更喜欢按值嵌入对象,但是如果需要指针,可以在拥有指针的类的成员数据中使用auto_ptr,并将对象作为引用传递给周围。 当指针可以为null或可以更改时,我通常只在成员数据中使用指针。还有其他理由更喜欢指针而不是数据成员的引用吗? 难道说包含引用的对象是不可分配的,因为引用一旦初始化就不应更改?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.