C++入门问题:自定义testing类成员函数无法访问是什么原因?
问题根因
C++ 中class定义的类,未显式声明访问修饰符的成员,默认访问权限为私有(private),私有成员仅允许类内部的成员函数、友元访问,类外部(比如此处的main函数)无权直接调用。你代码里的printname成员函数没有加public修饰符,属于私有成员,main函数调用时自然会报无法访问的错误。
修复方案
直接修改testing.h里的类定义,给需要外部访问的成员加上public修饰符即可:
#ifndef TESTING_H #define TESTING_H #include <string> using namespace std; class testing { private: // 私有成员建议显式标注,提升代码可读性 string Name; public: // 新增public修饰符,下方声明的成员可被类外部访问 void printname(string name); }; #endif
其余的testing.cpp和main.cpp代码无需改动,重新编译即可正常运行。
优化建议
- 不建议在头文件中写
using namespace std;,容易引发命名冲突,最好改为显式使用std::前缀,比如std::string Name; - 类的成员变量建议和普通变量做命名区分,比如加前缀
m_写成m_name,可进一步提升代码可读性
内容的提问来源于stack exchange,提问作者jaycob hamso
相关产品推荐
相关产品推荐

