对象无法访问其私有数据。错误:在此上下文中为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;