草庐IT

Pointers

全部标签

C++ 指向类实例的指针

我有一个(对于比我更好的C++程序员来说)关于类和指针的简单问题。我考虑过发布描述我的问题的示例代码,但我发现用文字解释它更容易。假设我有三个类:A类:主类-它包含B和C的实例。B类:这个类包含一个输出一些字符串的方法,称之为Greet()。C类:这个也有一个方法,但是那个方法必须在B的实例中调用Greet()即位于A类中。我们将其命名为DoSomethingWithB()所以程序开始了,在主函数中我创建了一个A的实例。A再次创建了B和C的实例。然后,A调用C.DoSomethingWithB();。我的问题由此开始:我无法从C内部访问B。显然,我需要将指向B的指针传递给DoSomet

C++打印指针的值

我有一个双指针数组,但每次我尝试打印其中一个值时,地址都会被打印出来。如何打印实际值?cout有人知道吗? 最佳答案 如果它真的是一个(已初始化的)双指针数组,即:double*arr[]=...//Initializeindividualvalues你只需要:cout 关于C++打印指针的值,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2485565/

c++ - C++ 中的相互类实例

这段代码有什么问题?这里我们有两个文件:classA.h和classB.hclassA.h:#ifndef_class_a_h_#define_class_a_h_#include"classB.h"classB;//????classA{public:A(){ptr_b=newB();//????}virtual~A(){if(ptr_b)deleteptr_b;//????num_a=0;}intnum_a;B*ptr_b;//????};#endif//_class_a_h_classB.h:#ifndef_class_b_h_#define_class_b_h_#include

c++ - 在C++中动态创建指针函数

我今天正在做我的高等微积分作业,我们正在按照牛顿法进行一些迭代方法来寻找诸如x^2=2之类的问题的解决方案。这让我想到我可以编写一个函数,该函数将采用两个函数指针,一个指向函数本身,一个指向导数并使过程自动化。这不会太具有挑战性,然后我开始考虑是否可以让用户输入一个函数并解析该输入(是的,我可以做到)。但是我可以在C++中动态创建一个指向单变量函数的指针吗?例如,如果x^2+x,我可以在运行时创建一个函数doublefunction(doublex){returnx*x+x;}吗?这是否可行,或者是否符合自修改代码的要求?编辑:所以我想,如果您将信息存储在一个数组中,并且该数组具有一个

C++ 模板和指针

我对模板和指针有疑问(我认为)。以下是我的部分代码:/*ItemCollection.h*/#ifndefITEMCOLLECTION_H#defineITEMCOLLECTION_H#includeusingnamespacestd;templateclassItemCollection{public://constructor//destructorvoidinsertItem(constT);private:structItem{Tprice;Item*left;Item*right;};Item*root;Item*insert(T,Item*);};#endif以及带有函数定

c++ - 操作数据成员 (C++)

我有一个将对象作为参数的方法。调用者和参数都有相同的成员(它们是同一类的实例)。在该方法中,比较特定的成员,然后根据此比较,需要操作参数对象的一个​​成员:classObject{//memberspublic:someMethod(objectother){intresult;member1-other.member1=result;other.member2=other.member2-result;}唯一的问题是它实际上并没有将other.member2更改到此范围之外,并且更改需要是永久的。所以,是的,抱歉:我需要有关指针的建议...我已经在网上和书籍中查看过,但我无法让它工作

c++ - std::allocator<T>::deallocate 的第二个参数的目的是什么?

Inhere是释放内存的声明。分配器类。我的问题是这个声明中的第二个参数是什么?如果此函数调用operatordelete(_Ptr),则此参数未被使用,那么它在那里有什么用?谢谢。摘自MSDN:从指定位置开始的存储中释放指定数量的对象。voiddeallocate(pointer_Ptr,size_type_Count);参数_Ptr指向要从存储中释放的第一个对象的指针。_计数要从存储中释放的对象数。 最佳答案 当您调用deallocate时,您必须给它一个您之前通过调用allocate获得的指针以及您传递给allocate的大小

c++ - 指针的部分特化,C++

如何对类GList进行部分特化,以便可以存储I(即I*)的指针?templatestructTIList{typedefstd::vectorType;};templateclassGList{private:typenameTIList::Typeobjects;}; 最佳答案 您无需专门化即可实现这一点。它已经可以存储指针。GListints;无论如何,如果您想为指针特化GList,请使用以下语法。templateclassGList{...};然后只需使用I就像在任何普通模板中一样。在上面的例子中GList,将使用指针特化,并

c++ - 为变量分配新值时内存泄漏?

是的,我是那些从Java学习C++的人之一,被自动垃圾收集器宠坏了。有一种特殊情况,我想知道我是否正在泄漏内存。让我们在C++中考虑:bool*test=newbool(false);test=newbool(true);deletetest;我在这里泄漏内存了吗?或者我应该在分配新值之前先调用delete吗?像这样:bool*test=newbool(false);deletetest;test=newbool(true);deletetest;我的直觉告诉我第一个是正确的,因为指针test指向内存中的同一地址,并为其变量分配一个新值,不会改变这个地址。或者new运算符是否在内存中分

c++覆盖一个已经定义的变量

我有以下主要功能,使用指针创建系数的乘积。这只是项目的一小部分,用于创建多项式:#include"header.h"intmain(){TermProdx=TermProd(newCoeff(4),newCoeff(8));x.print();cout经过测试,覆盖似乎起作用了。但是当我在x上调用打印时,出现段错误。我一直在尝试并盯着它看了很长一段时间,但我无法找出真正的问题。此外,我的搜索没有找到正确的方向,所以我决定创建一个小的代码片段来重现错误。我的header.h文件如下所示:classTerm{public:Term(){};virtual~Term(){};virtualT