草庐IT

Pointers

全部标签

c++ - std::vector 类型引用的无效初始化

这是错误:DummyService.hpp:35:error:invalidcovariantreturntypefor'virtualstd::vector>&DummyService::list(conststd::string&)'classBean{public:typedefstd::stringPath;virtual~Bean(){};virtualconstPath&getPath()=0;virtualconststd::string&getName()=0;protected:Bean();};classResourceBean:publicBean{public:

c++ - boost::ptr_vector 对比 std::vector<std::unique_ptr<T>>?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。他们做类似的事情。在两者之间进行选择时应该考虑什么?在哪种情况下,哪一个是首选?

c++ - 使用两个不同的构造函数初始化指向数组的指针

我有一个程序,我想在其中使用指针初始化一个类对象数组。classxyz{};cin>>M;xyz*a=newxyz[M];//thiswillcalltheconstructorforeachobject.问题是我在xyz类中有两个构造函数。我想使用其他构造函数初始化最后两个元素,而不是没有参数的默认构造函数。我该怎么做?我希望第M+1和第M+2项由接受参数的不同构造函数初始化。 最佳答案 std::vectora(M-2);a.push_back(xyz(...));//xyz(...)hereisacalltothea.push

c++ - 从指针更改数组中的值?

我一直在研究指针以帮助更好地理解。我已将a声明为指向长度为3的整数数组的指针,并将b声明为长度为3的整数数组。然后我指向a在b。intmain(){int(*a)[3];intb[3]{2,4,6};a=&b;a[0][0]=8;//Thisprintsout8and8.std::cout要通过指针a访问b的元素,我必须像a一样执行a[0][0]数组的数组。这与使用new关键字声明指向整数数组的指针相比,我只能输出c[0]。int*c=newint[3]{2,4,6};std::cout这是为什么?非常感谢,乔治 最佳答案 Ihav

c++ - 指向虚函数的指针

所以我现在有点进退两难。我想做一个函数指针,但我想把它做成一个虚函数。不一定是虚函数本身,而是派生函数。我试着只制作指针,但函数需要是静态的。当我尝试创建静态虚函数时,编译器对我大喊大叫。我也不想使函数指针类特定,因此可以想象其他类可以使用该指针。这是我在伪代码中的意思:classC{public:virtualvoidsomething();};classB:publicC{public:voidsomething();};classD{public:voidsomething();};intmain(){void(*pointer)();Bb;Dd;pointer=b.someth

c++ - shared_ptrs 的 vector 行为神秘

我创建了一个Base类shared_ptr的vector来保存Derived类shared_ptr,并运行到一些问题。下面的简化示例显示了发生的情况。#include#include#includeusingnamespacestd;classBase{public:Base(inti):val(i){}intval;};classDerived:publicBase{public:Derived(inti):Base(i){}};intmain(){vector>vec1{make_shared(5),make_shared(99),make_shared(18)};for(auto

c++ - 此指针类型转换符号的含义

我已经多次看到这种类型的声明,但不知道它在做什么:*(type*)$var例如:*(char*)&myChar如果正在检索myChar的地址并将其转换为char指针,那么为什么额外的指针在外面,为什么地址可能是int或hex值被转换为指针?这对我来说毫无意义。我是初学者,所以请逐步解释这里发生了什么,以及为什么使用这种令人困惑的格式进行类型转换。谢谢。 最佳答案 *(char*)&myChar获取myChar的地址,然后转换为char*,最后访问它指向的对象。效果是,访问将根据类型转换指针类型。例如intx;charc=*(char

c++ - 在 C++ 中获取指向复数 vector 的实部和虚部的指针

使用标准的C++复数和vector库,我定义了一个复数vector。现在,我想获取指向包含此复数vector的实部和虚部的vector的指针(double*类型)。以下解决方案有效,但由于内存使用量增加了一倍,因此不够优雅且浪费;usingnamespacestd;typedefcomplexcmp;..inti,m=10;vectorC(m);//DosomethingtopopulatethevectorCvectorR(m),I(m);for(i=0;i 最佳答案 根据C++标准Ifzisanlvalueexpressiono

c++ - 使用指针作为模板非类型参数

我想使用数组指针(使用数组算法)作为非类型参数。我知道参数应该在编译时已知,但固定大小的全局数组不是这样吗?这个例子可以打印前两行,但不能打印第三行。有什么解决方法吗?编辑:我不仅在寻找aa+1的答案,而且还在寻找所有aa+i的答案,其中i小于aa的大小#includevoidprint(intn){printf("thevalueis:%d\n",n);}templatevoidmyWrapper(){print(*n);}voidmyCall(void(*CALLBACK)(void)){CALLBACK();}inta=1;intaa[4]={2,3,4,5};intmain()

c++ - 我应该从静态成员方法返回什么类型的指针

我主要来自Java世界,但最近一直在编写大量C++,但仍然不太了解如何使用指针或在何处使用哪种类型的指针。我将简要举例说明我的案例,并记住我真正要问的问题是“我应该使用哪种类型的指针以及为什么?”。与我的代码完美平行的是考虑链节的类。每个链接都有一个父链接,除了根链接只能有一个。//Link.hppclassLink{public:Link(conststd::string&linkName,Link*parentLink);Link(conststd::string&linkNam);staticLink*createRootLink(conststd::string&linkNam