Questions tagged «c++»

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

7
类声明括号后的分号
在C ++类中,为什么在右花括号后加分号?我经常忘记它并得到编译器错误,从而浪费时间。在我看来似乎有点多余,事实并非如此。人们是否真的在做以下事情: class MyClass { . . . } MyInstance; 从结构和枚举的C兼容性角度来看,但是由于类不是C语言的一部分,我想它主要是在类似声明结构之间保持一致性。 我一直在寻找的是与设计原理相关的东西,而不是能够更改任何东西,尽管良好的代码完成IDE可能会在编译之前就将其捕获。
82 c++  class  oop  declaration 

4
轻松检查共享库中未解析的符号?
我正在编写一个相当大的C ++共享对象库,并且遇到了一个使调试困难的小问题: 如果我在头文件中定义函数/方法,却忘记为它创建存根(在开发过程中),因为我正在构建为共享对象库而不是可执行文件,那么编译时不会出现任何错误,告诉我忘记实现该功能。我发现问题的唯一方法是在运行时,当最终与该库链接的应用程序崩溃并出现“未定义符号”错误时。 我正在寻找一种简单的方法来检查我在编译时是否具有所需的所有符号,也许可以将它们添加到我的Makefile中。 我想出的一个解决方案是运行已编译的库,nm -C -U以获取所有未定义引用的已分解列表。问题在于,这还会列出其他库(例如GLibC)中所有引用的列表,当最终应用程序放在一起时,这些引用当然会与此库链接在一起。这将有可能使用的输出nm,以grep通过所有我的头文件,看看是否有任何名称的对应..但这似乎疯了。当然这不是一个不常见的问题,并且有更好的解决方法?

9
为什么C ++标准库中没有transform_if?
想要进行有条件的复制时出现一个用例(1.可使用copy_if),但要从值的容器到指向这些值的指针的容器(2.可以使用transform)。 使用可用的工具,我无法通过不到两个步骤来做到这一点: #include <vector> #include <algorithm> using namespace std; struct ha { int i; explicit ha(int a) : i(a) {} }; int main() { vector<ha> v{ ha{1}, ha{7}, ha{1} }; // initial vector // GOAL : make a vector of pointers to elements with i < 2 vector<ha*> ph; // …

21
从路径获取文件名
从路径获取文件名的最简单方法是什么? string filename = "C:\\MyDirectory\\MyFile.bat" 在这个例子中,我应该得到“ MyFile”。没有扩展名。
82 c++  visual-c++ 


2
std :: ignore与结构化绑定?
序幕: std::tuple<int, int, int> f(); std::tuple<int, int, float, int> g(); C ++ 1z将引入结构化绑定的语法,这将使编写代替 int a, b, c; std::tie(a, b, c) = f(); 就像是 auto [a, b, c] = f(); 但是,std::tie还允许指定std::ignore忽略某些组件,例如: std::tie(a, b, std::ignore, c) = g(); 使用新的结构化绑定语法是否可以做类似的事情?如何运作?

4
表达式必须具有类类型
我已经有一段时间没有用C ++编写代码了,当我尝试编译这个简单的代码片段时,我陷入了困境: class A { public: void f() {} }; int main() { { A a; a.f(); // works fine } { A *a = new A(); a.f(); // this doesn't } }

4
对C ++字符串的字符进行排序
如果我有一个字符串,是否有一个内置功能可以对字符进行排序,还是我必须自己编写? 例如: string word = "dabc"; 我想将其更改为: string sortedWord = "abcd"; 也许使用char是更好的选择?我将如何在C ++中做到这一点?
82 c++  string  sorting 

9
如何克服“系统上缺少'aclocal-1.15'”警告?
我试图在github上运行c ++程序。(可通过以下链接https://github.com/mortehu/text-classifier获得) 我有一台Mac,正在尝试在终端中运行它。我想我已经下载了autoconf和automake,但不确定。要运行该程序,我将转到终端中的正确文件夹,然后运行 ./configure && make 但是我得到了错误: 警告:您的系统上缺少'aclocal-1.15'。仅当您修改了“ config.ac”包含的“ acinclude.m4”或“ configure.ac”或m4文件时,才需要使用它。“ aclocal”程序是GNU Automake软件包的一部分:http : //www.gnu.org/software/automake 它还需要GNU Autoconf,GNU m4和Perl才能运行:http : //www.gnu.org / software / autoconf http://www.gnu.org/software/m4/ http://www.perl.org/ make:*** [aclocal.m4]错误127 我有xcode和g ++以及运行c程序所需的所有东西,但是很明显,我不知道我在做什么。 在上面的链接中运行程序的最简单,最简单的方法是什么?我意识到它带有自述文件和示例用法,但我无法使其正常工作。

5
查找最大元素的位置
是否有一个标准函数返回值数组的max元素的位置(而不是值)? 例如: 假设我有一个像这样的数组: sampleArray = [1, 5, 2, 9, 4, 6, 3] 我想要一个返回3的整数的函数,该整数告诉我这sampleArray[3]是数组中的最大值。
82 c++  algorithm 




6
初始化C ++结构的正确方法
我们的代码涉及一个POD(普通旧数据结构)结构(这是一个基本的c ++结构,其中包含其他结构和POD变量,需要在开始时对其进行初始化。) 根据我所读的文章,似乎: myStruct = (MyStruct*)calloc(1, sizeof(MyStruct)); 应该将所有值初始化为零,如下所示: myStruct = new MyStruct(); 但是,当用第二种方法初始化该结构时,Valgrind随后抱怨说,当使用这些变量时,“条件跳转或移动取决于未初始化的值”。我的理解是否存在缺陷,还是Valgrind抛出假阳性?


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.