无法分离实现和接口
Could not separate implementation and interface
我无法编译以下文件。我试图将姓名和年龄传递给一个对象,在检查并将每个年龄分配给适当的类别(成人、儿童…)后,我试图打印它。
我的3个文件如下:
第一个1:
//cannot access private member declared in class Person
//No constructor could take the source type, or constructor overload resolution was ambiguous.
#include <iostream>
#include <string>
using namespace std;
#include "person2.h"
void getData(Person&);
void displayData(Person&);
int main(){
Person p;
getData(p);
displayData(p);
}
void getData(Person& p){
cout<< "Enter the name: ";
cin>> p.name;
cout<<"Enter the age: ";
int age;
cin>> age;
p.setAge(age);
p.ageGroup = p.determineAgeGroup(age);
}
void displayData(Person& p){
cout<<p.name<< " is in the group of " << p.ageGroup <<endl;
}
第二个:
#include <iostream>
#include <string>
using namespace std;
class Person {
public:
string name;
string ageGroup;
void setAge(int&);
string getAge();
string getAgeGroup(int);
private:
int age;
string determineAgeGroup(int );
};
第三个:
#include <iostream>
#include <string>
#include "person2.h"
using namespace std;
void Person::setAge(int& a){
if(a<0) cout<< "No";
}
string Person::getAge(){
return age;
}
string Person::determineAgeGroup(int a){
if(a>= 65) return "Senior";
else if(a<65 & a>= 20) return "Adult";
else if(a<20 & a>= 13) return "Teen";
else return "Kid";
}
string Person::getAgeGroup(int a){
return determineAgeGroup(a);<<endl;
}
检查以下内容:
- endl而不是displayData中的end
- 在getData中声明int age并将该值传递给p.setAge
- getAge的返回值应为int
- 将determineAgeGroup()设为public,或者从成员函数(如setAge())中调用determineAgeGroup(),或者调用公共函数getAgeGroup(()
这至少应该让你编译。。。
注意:解决问题的最终编辑是第4个要点,特别是调用公共函数getAgeGroup()。
相关文章:
- 如何从实现接口的模板化类实例访问结构
- 传递实现特定接口的类
- 如何在C++中实现接口
- C++ 使用接口和默认实现继承
- unique_ptr实现接口时对已删除函数的引用
- C++接口实现和子类化对象识别
- 接口实现和私有继承之间的交互
- Pimpl习惯用法、单独的接口/实现文件和多个虚拟继承.如何
- 定义大量的接口实现
- cpp文件中的纯虚拟接口实现
- 如何使用接口实现回调
- 继承接口实现
- 如何在C++中编写类java参数级接口实现
- 具有其他默认参数的接口实现
- Mixin和接口实现
- 如何在许多类中重用接口实现
- Emscripten Javascript接口实现
- 获取Firefox内置组件的接口实现
- c++中的头文件和Java中的抽象类/接口实现是相同的想法,这是正确的吗?
- C++中的接口+实现:代码不执行