相关疑难解决方法(0)

C++迭代器运算符优先级问题*it.method()vs(*it).method()vs it-> method()

此代码将无法编译:

for(vector<Box>::iterator it = shapes.end(); it >= shapes.begin(); --it){
    *it.update(1,1);
    *it.draw();
}
Run Code Online (Sandbox Code Playgroud)

它声称:

main.cpp:80:17: error: ‘std::vector<Box>::iterator’ has no member named ‘update’
main.cpp:81:17: error: ‘std::vector<Box>::iterator’ has no member named ‘draw’
Run Code Online (Sandbox Code Playgroud)

但是AFAIK,那个代码没有尝试调用vector :: iterator.draw(),它取消引用迭代器,它应该给我一个我的类框的对象,它有这些方法.我做错了什么,抱歉这个糟糕的头衔.

c++ iterator

2
推荐指数
1
解决办法
157
查看次数

指针c ++对象和变量

因为我目前正在学习C++中的指针,所以我想知道语法.因此,当我想在对象上使用指针时,我不必取消引用它,以便访问类属性.当我只想在一个简单变量上使用指针时,我必须使用*来改变它的值.

那么为什么我不必使用*作为对象呢?因为我认为我只会更改内存地址.

宾语:

int age = 20;
User John(age);    
User *ptrUser = &John;

ptrUser->printAge(); // 20 (why no *ptrUser->printAge()  ??? )
cout << ptrUser // 0x123456...
Run Code Online (Sandbox Code Playgroud)

变量:

int a = 10;
int *ptrA = &a;   
*ptrA = 20;  
cout << a // 20
Run Code Online (Sandbox Code Playgroud)

非常感谢你!

c++ oop pointers

2
推荐指数
1
解决办法
71
查看次数

二进制表达式人员和人员的操作数无效

我知道之前在类似情况下已经问过这个问题,但是我是C++的新手,无法弄清楚需要做什么或者为什么要这样做.基本上我使用的是我创建的Person对象,它具有变量名称,年龄,高度和权重.我需要对我创建的Person对象运行快速排序,并按年龄对它们进行排序.

人员类:

class Person{
private:
    string name;
    int age, height, weight;
public:
Person(string name = "empty", int age = 0, int height = 0, int weight = 0)
{
    this->name = name;
    this->age = age;
    this->height = height;
    this->weight = weight;
};
Run Code Online (Sandbox Code Playgroud)

快速排序方法:

// Quick Sort
void QuickSort(Person *A, int start, int end){
    if(start < end){
        int p = partition(A, start, end);
        QuickSort(A, start, p - 1);
        QuickSort(A, p + 1, end);
    }
}
int partition(Person *A, int start, int …
Run Code Online (Sandbox Code Playgroud)

c++ sorting

2
推荐指数
1
解决办法
122
查看次数

这是什么意思:“成员引用类型‘Human *’是一个指针;你的意思是使用‘-&gt;’吗?”

我正在研究 C++ 类。

我基本上是在重新制作我在这里所做的事情,但是在 C++ 中。

它进展顺利,但我不明白错误member reference type 'Human *' is a pointer; did you mean to use '->'?意味着什么。我从未使用过->,也见过*以这种方式使用过(例如const char *),但我不太确定它是如何工作的。

我发现的最接近的问题是这个,但答复没有帮助。

这是我的代码

#include <stdio.h>
#include <cstdlib>
#include <iostream>
using std::cout;
using std::cin;
using std::string;

class Human {
    public:
    string Name;
    int Age;
    double Height;

    void Initialise(string name, int age, double height) {
        this.Name = name; // Error here
        this.Age = age; // Error here
        this.Height = …
Run Code Online (Sandbox Code Playgroud)

c++ pointers

2
推荐指数
1
解决办法
2698
查看次数

在C++中使用Array of Structures元素

我刚开始学习c ++而且我被困在这里.我做了一个结构

...
struct student{
string name;
int roll;
};
...
Run Code Online (Sandbox Code Playgroud)

然后,我在全球范围内称呼它.student s1[20];在我的主要功能中,我做了类似的事情

...
int count=0;
student *p;
p=s1;
cout<<"Enter the Number of records, you wish to consider.";
cin>>arraySize;
p = new student[arraySize];
while (count!=arraySize) {
    cout<<"Enter name.";
    cin>>*(p+count)->name; //Error comes over here
}
...
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是Indirection requires pointer operand.有人可以帮我解决这个问题吗?

c++

1
推荐指数
1
解决办法
41
查看次数

我是否更喜欢使用点(.)或箭头( - >)运算符来访问C++中的指针成员?

正如我刚刚了解到的,对于一个指针p,有两种等效的方式来访问被引用对象的成员,即p->foo(*p).foo.

是否有最适合使用的技术论据?

注意:我读到的一个论点是,.它更安全,因为它不能重载,而->可以.但是,我想,必须有更多的参数,因为在我工作的大多数C++代码中,我只看到->-construct.

c++ oop pointers

1
推荐指数
1
解决办法
243
查看次数

C++类 - 点符号与指针

可能重复:
点(.)运算符和C++中的 - >有什么区别?

使用点符号和指针方式有什么区别?

使用或不使用指针实例化对象.

实例化w/oa指针=然后使用点表示法

实例化w/a指针=然后使用 - >

两者有什么不同?何时以及为什么要使用另一个?

c++

0
推荐指数
1
解决办法
6909
查看次数

CComPtr的".Release()"和" - > Release()"之间的区别?

有人可以清楚地解释CComPtr 之间.Release() 和 之间的区别 ->Release()吗?

准确地说,在任何一种情况下如何发生内存管理?

c++ com atl

0
推荐指数
1
解决办法
853
查看次数

从私有std :: map获取价值

我从C++开始,我正在尝试通过组合扩展std :: map类.我想使用这个类CardPackage有id和指针的私人地图,我EntityCards和实现三个方法AddCard,GetCard并且RemoveCard将访问私人地图m.

问题是我无法使用m方法(findend),因为我收到以下错误消息:

expression must have a pointer type

我知道m需要成为一个指针,用箭头符号(或点)来访问,但我无法弄清楚是否要使代码适应我的要求.

标题:

#include <EntityCard.h>

class CardPackage
{
public:

CardPackage();
~CardPackage();

void AddCard(EntityCard* card);
EntityCard* GetCard(int id);
bool RemoveCard(int id);

private:
    map<int, EntityCard*> m;
};
Run Code Online (Sandbox Code Playgroud)

资源:

#include "CardPackage.h"

CardPackage::CardPackage()
{
}


CardPackage::~CardPackage()
{
}

   void CardPackage::AddCard(EntityCard *card)
   {
        m[card->ID] = card;
   }

EntityCard* CardPackage::GetCard(int id)
{
    if (id < 1) { …
Run Code Online (Sandbox Code Playgroud)

c++ pointers

0
推荐指数
1
解决办法
86
查看次数

在 C++ 中。(*a).b 和 a-&gt;b 有什么区别?

由于到目前为止我只使用过 Web 和 .NET 语言,因此我正在从我的工作中学习高级编程课程中的 C++。在中途测试中,讲师将我对 (*a).b 的所有使用标记为错误并因此被扣分,这可能会对我的最终分数产生负面影响,我需要一个近乎完美的分数才能将工作从网络堆栈过渡到应用程序stack,你们中的一些人能帮我解决这个争端吗?

c++ syntax pointers

0
推荐指数
1
解决办法
350
查看次数

为什么不能和*一起使用.访问结构成员?

据说*C 中的运算符意味着"指向变量的指针",并且以下代码是合法的:

#include <stdio.h>
int main(){
    int a=5;
    int *p=&a;
    printf("%d\n", *p);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但以下代码是非法的:

#include<stdio.h>

struct pair{
    int a,b;
};

int main(){
    struct  pair Alice, *Bob=&Alice;
    Alice.a=1;
    Alice.b=2;
    printf("%d %d\n",*Bob.a,*Bob.b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

那么,为什么*运算符适用于指向普通变量的指针,但是对指向结构的指针不起作用?

c

-1
推荐指数
1
解决办法
73
查看次数

箭头 vs 点语法?

一位朋友正在学习数据结构课程,我正在尝试解释链表上下文中的差异。我真的应该知道这一点,但是在专注于高级框架之后,我有点生疏了。我知道“箭头与指针一起使用”,但仅此而已。

本质上,在 C 中,访问某个变量的属性时点和箭头有什么区别?另外,因为我的心情特别愚蠢,这在 C++ 中是一样的,还是改变了?

c c++ syntax

-4
推荐指数
1
解决办法
1218
查看次数

'.'之间有什么区别?和' - >'在数组中使用?

在数组中使用.和之间有什么区别->?那是:

(*foo[i]).bar
Run Code Online (Sandbox Code Playgroud)

VS

foo[i]->bar
Run Code Online (Sandbox Code Playgroud)

或者:它们是一样的吗?

编辑: BTW,其他参考只在foo.bar和之间询问foo->bar.我知道不同之处.但是最近,我正在阅读一些(*foo).bar我认为应该使用的样本foo->bar.

c c++ arrays pointers

-7
推荐指数
1
解决办法
762
查看次数

标签 统计

c++ ×12

pointers ×6

c ×3

oop ×2

syntax ×2

arrays ×1

atl ×1

com ×1

iterator ×1

sorting ×1