C++ 表达式必须具有指针类型错误visual studio 2012
我使用visual studio 2012,当我尝试构建这个简单的程序时,我收到了这个错误,我不知道问题出在哪里。这是我的密码C++ 表达式必须具有指针类型错误visual studio 2012,c++,visual-studio-2012,C++,Visual Studio 2012,我使用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
#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)的语法糖。成员< /代码>。也就是说,它在尝试访问
成员
之前取消对对象的引用。解引用运算符*
只能应用于指针类型
注意:也有例外-如果对象
是一个类的实例,该类重载了*
或->
,则这些运算符将执行该类中定义的功能。在这种情况下,可以将这些运算符应用于非指针对象
通常,如果要访问结构或类的成员,请使用object.member
。如果有指向结构或类的指针,请使用(*pointer).member
,或更短的pointer->member
< > >代码> TyPufStrut比C++更为C。通常在C++中简单地声明为<代码>结构> /代码>。因此,biginger
声明将变成:
struct BigInteger {
char digits[MAXN];
int lastdigit;
};
<> > < C++ >结构> <代码>,默认情况下,所有成员都是代码>公用< /C>。>代码> < <代码>不是指针。code>operator->
需要一个指针或重载它的类。我将它改为a.digits[I],现在它工作正常。太多了。请给我一个长的答案如果我已经在使用一个点,并且它说“表达式必须有指针类型”,该怎么办?我正在尝试访问结构上的一个成员,实例如下git\u status\u list status\u list代码>代码> > GITZATSTOSLISTRON/COD>是Stutt类型,然后访问它的表达式看起来像“代码> StasuSList.<代码>,它给出了错误。”在C++中,对象> >成员< /> >是<>代码(*Object)的语法糖。成员< /代码>。“如果<代码>对象< /C>是指针,是的;但值得注意的是,对象
也可能是用户定义类型(例如,类
)的实例,该类型重载了运算符->()
(示例为容器迭代器、智能指针……)。同样,“解引用运算符*
只能应用于指针类型”或重载它的类型。这一点很好-我没有想到!我将编辑答案。谢谢你的帮助。
struct BigInteger {
char digits[MAXN];
int lastdigit;
};