对象无法访问其私有数据。错误:在此上下文中为private 我是一个C++新手。我有一个简单的类,它存储一个人的姓名和年龄。 由于某些原因,类的对象无法访问私有数据。当我运行下面的代码时,我得到一个错误:Test::name在此上下文中是私有的
头文件对象无法访问其私有数据。错误:在此上下文中为private 我是一个C++新手。我有一个简单的类,它存储一个人的姓名和年龄。 由于某些原因,类的对象无法访问私有数据。当我运行下面的代码时,我得到一个错误:Test::name在此上下文中是私有的,c++,C++,头文件 namespace Testing { class Test { public: Test(); // initializes to 0 Test(int age_, std::string name_); private: int age; std::string name; }; } 实施文件: #include <string&g
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_;
}
主要
对象不能直接访问私有数据。
只有类的成员函数才能访问它。 所以,试着在类中编写一个成员函数,或者让变量age、name像public一样公开 课堂测试{ 公众: Test;//初始化为0 测试年龄,标准::字符串名称 智力年龄 std::字符串名 }) 或者创建好友函数
您的问题是您试图访问私有数据名,因此需要使用公共getter或将成员数据公开:
std::string Test::getName()const{
return name;
}
总的来说:
//cout << test.name<< endl;
std::cout << test.getName() << endl;
您正试图从main函数访问类的私有成员。访问私有数据的不是对象,也不清楚这是什么意思,试图访问该数据的是函数main。函数main无权访问类的私有成员。因此出现错误。您的实现不在测试命名空间中。不能从类外部访问私有和受保护的成员,而可以访问公共成员。所以您要么公开名称,要么使用getter/setter。记住,类的默认成员是私有的,而结构的默认成员是公共的。请格式化code@drescherjm:没有必要这样做。使用名称空间测试;完全足以定义OP代码中定义的成员。使用常规名称查找来查找成员定义中的类名。它确实找到了类Testing::Test,因为前面使用了namespace Testing;。而且它确实正确地将定义与声明相关联。@AnT•嗯,谢谢。。。我不知道!今天我学到了一些新东西。只有类的成员函数才能访问它。按:您是指声明成员的类吗?严格地说,那不是真的。
//cout << test.name<< endl;
std::cout << test.getName() << endl;