大家好,
我正在创建扩展抽象类的getter / setter,我不明白为什么我能够设置属性值但不能从setter中读取它。
//主文件
#include <iostream>
#include "cat.h"
int main() {
Cat* tom;
tom->setName("TOM");
std::cout << tom->getName() << std::endl; // Here I got error EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
return 0;
}
// Animal.h文件
#ifndef CLASSES_ANIMAL
#define CLASSES_ANIMAL
#include <string>
using namespace std;
class Animal {
protected:
string name;
public:
virtual inline string getName() const = 0;
virtual void setName() = 0;
virtual ~Animal() = default;
};
#endif //CLASSES_ANIMAL
//在Cat.h中
#ifndef CLASSES_CAT_H
#define CLASSES_CAT_H
#include <string>
#include "animal.h"
class Cat : protected Animal {
public:
Cat(){};
inline string getName() const{ return name; }
void setName(string sentName);
~Cat(){};
};
#endif //CLASSES_CAT_H
// Cat.cpp
#include "cat.h"
void Cat::setName(string sentName) {
if(!sentName.empty()){
name = sentName;
}
}
答案 0 :(得分:2)
您需要创建其对象。
Cat* tom = new Cat();