gpt4 book ai didi

c++ - 表达式必须有指针类型错误 visual studio 2012

转载 作者:太空狗 更新时间:2023-10-29 20:14:01 26 4
gpt4 key购买 nike

我使用 visual studio 2012,当我尝试构建这个简单的程序时,我收到了这个错误,我无法理解问题出在哪里。这是我的代码。

#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <string>
#define MAXN 400 //max digits
using namespace std;

typedef struct {
//signbit nqma nujda v tozi slu4ai
char digits[MAXN];
int lastdigit;
} BigInteger;

BigInteger addBigIntegers(BigInteger *a, BigInteger *b, BigInteger *c)
{
c->lastdigit = max(a->lastdigit, b->lastdigit);
int carry = 0;
for(int i = 0; i<=(c->lastdigit); i++)
{
c->digits[i] = (char)(carry + a->digits[i] + b->digits[i]) % 10;
carry = (carry + a->digits[i] + b->digits[i]) / 10;
}
return *c;
}

int main()
{
BigInteger a;
BigInteger b;
string input1;
string input2;
cin >> input1 >> input2;
int len1 = input1.length();
int len2 = input2.length();
for(int i = len1-1; i>=0; i--)
{
a->digits[i] = 5;
}
}

错误在这一行:

a->digits[i] = 5;

我该如何解决?

最佳答案

在 C++ 中,object->member(*object).member 的语法糖。也就是说,它在尝试访问 member 之前取消引用 object。解引用运算符 * 只能应用于指针类型。

注意也有异常(exception)——如果 object 是重载 *-> 的类的实例,这些运算符将执行它们的功能在类中定义。在这种情况下,可以将这些运算符应用于非指针对象。

一般来说,如果要访问结构或类的成员,请使用object.member。如果您有指向结构或类的指针,请使用 (*pointer).member 或更短的 pointer->member

另外,typedef struct 比 C++ 更像 C。在 C++ 中更常见的是简单地声明为 struct。所以 BigInteger 声明将变成:

struct BigInteger {
char digits[MAXN];
int lastdigit;
};

C++ 中的 struct 只是一个类,默认情况下所有成员都是 public

关于c++ - 表达式必须有指针类型错误 visual studio 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18359840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com