我是一个c ++新手。我有一个简单的课程,存储一个人的姓名和年龄。 由于某些原因,类的对象无法访问私有数据。当我运行下面的代码时,我得到错误:Test :: name在此上下文中是私有的。
标头文件
namespace Testing {
class Test {
public:
Test(); // initializes to 0
Test(int age_, std::string name_);
private:
int age;
std::string name;
};
}
实施档案:
#include <string>
#include "Test.h"
using namespace std;
using namespace Testing;
Test::Test(){
age = 26;
name = "George";
}
Test::Test(int age_, string name_){
age = age_;
name = name_;
}
主要
#include <iostream>
#include "Test.h"
using namespace std;
using namespace Testing;
int main(){
Test test;
cout << test.name << endl;
return 0;
}
答案 0 :(得分:2)
您正试图从main
函数访问您班级的私人成员。它不是访问私有数据的“对象”(并且不清楚你的意思),它是试图访问该数据的函数main
。函数main
无权访问您的类的私有成员。因此错误。
答案 1 :(得分:0)
对象无法直接访问私人数据。 只有类的成员函数才能访问它。 因此,尝试编写成员函数(类中的函数)或将变量(年龄,名称)设置为公共,如
班级考试{
公共:
测试(); //初始化为0
测试(int age_,std :: string name _);
int age;
std :: string name;
};
Refer this for using private data member
或者创建好友功能
答案 2 :(得分:0)
您的问题是您尝试访问private
数据(名称),因此您需要使用公开getter
或公开成员数据:
std::string Test::getName()const{
return name;
}
主要是:
//cout << test.name<< endl;
std::cout << test.getName() << endl;