gpt4 book ai didi

c++ - 使用 ->GetString (""时的段错误)在一个单独的类中

转载 作者:行者123 更新时间:2023-11-28 01:19:08 25 4
gpt4 key购买 nike

我现在正在练习一些基本的 C++,并决定在头文件中创建一个类,在单独的文件中创建构造函数、GetString 等函数。

当我使用创建我的对象时“人鲍勃”并使用“。”代码工作正常,但如果我执行 Person* Bob,SetName(x) 函数段错误,当我使用 ->SetName(x,其中 x 是“abc”字符串或字符串变量

main.cpp


#include <iostream>
#include <string>
#include "namevalue.h"
using namespace std;


int main(){
Person Bob;
string temp = "bob";
Bob.SetName(temp);
Bob.SetMoney(3000);
cout << Bob.GetName() << " " << Bob.GetMoney() << endl;
return 0;
}

人.h

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;

class Person{
public:
Person();
Person(int money, string name);

void SetName(string y);
void SetMoney(int x);

int GetMoney();
string GetName();


private:
int money;
string name;
};

人.cpp

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <array>
#include "namevalue.h"
using namespace std;

Person::Person(){
name = " ";
money = 0;

}


Person::Person(int x, string y){
SetName(y);
SetMoney(x);
}



void Person::SetMoney(int x){
money = x;
}

void Person::SetName(string x){
name = x;
}


int Person::GetMoney(){
return money;
}


string Person::GetName(){
return name;
}

最佳答案

如果你声明了一个指针变量,你需要先用一个有效的实例来填充它。否则,它指向无效内存,您将遇到您遇到的内存故障。

这应该有效。

Person* Bob = new Person();
Bob->SetName("Bob");
Bob->SetMoney(3000);

完成后,释放内存。

delete Bob;

关于c++ - 使用 ->GetString (""时的段错误)在一个单独的类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367602/

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