C++ 类成员可见性C++;
我需要使类的初始值设定项对子类不可见,但对main()可见。我怎么做?我看到的唯一方法是将其公开,但它将被继承到子类。有什么想法吗?您可以将其设置为私有,并将main添加为好友C++ 类成员可见性C++;,c++,C++,我需要使类的初始值设定项对子类不可见,但对main()可见。我怎么做?我看到的唯一方法是将其公开,但它将被继承到子类。有什么想法吗?您可以将其设置为私有,并将main添加为好友 class A { private: A() {} public: friend int main(void); }; int main(void) { // Your code } 您可以将其设置为私有,并将main添加为好友 class A { private: A() {} publi
class A {
private:
A() {}
public:
friend int main(void);
};
int main(void) {
// Your code
}
您可以将其设置为私有,并将main添加为好友
class A {
private:
A() {}
public:
friend int main(void);
};
int main(void) {
// Your code
}
将初始值设定项设置为私有(即使在main中也无法访问初始值设定项),您可以遵循许多设计模式来解决问题。其中一种设计模式是Singelton。 示例如下所示:
#include <iostream>
using namespace std;
class A{
private:
static A *single_instance;
//private constructor, cannot be inherited
A(){
}
public:
//for getting access in main
static A *getInstance() {
if (single_instance==NULL){
single_instance = new A();
}
return single_instance;
}
void print() {
cout<<"I'm from A";
}
};
//initializing with NULL
A *A ::single_instance=NULL;
class B:A {
//not access to the constructor
//but access to getInstance()
};
int main()
{
//now you can access it in main
A *obj = obj->getInstance();
obj->print();
return 0;
}
#包括
使用名称空间std;
甲级{
私人:
静态A*单个_实例;
//私有构造函数,不能被继承
(){
}
公众:
//用于进入主通道
静态A*getInstance(){
if(单实例==NULL){
单个_实例=新的A();
}
返回单_实例;
}
作废打印(){
coutprint();
返回0;
}
请注意,此设计确保只能从类中创建一个实例。将初始值设定项设置为私有(即使在main中也无法访问初始值设定项),可以遵循许多设计模式来解决问题。其中一种设计模式是Singelton。 示例如下所示:
#include <iostream>
using namespace std;
class A{
private:
static A *single_instance;
//private constructor, cannot be inherited
A(){
}
public:
//for getting access in main
static A *getInstance() {
if (single_instance==NULL){
single_instance = new A();
}
return single_instance;
}
void print() {
cout<<"I'm from A";
}
};
//initializing with NULL
A *A ::single_instance=NULL;
class B:A {
//not access to the constructor
//but access to getInstance()
};
int main()
{
//now you can access it in main
A *obj = obj->getInstance();
obj->print();
return 0;
}
#包括
使用名称空间std;
甲级{
私人:
静态A*单个_实例;
//私有构造函数,不能被继承
(){
}
公众:
//用于进入主通道
静态A*getInstance(){
if(单实例==NULL){
单个_实例=新的A();
}
返回单_实例;
}
作废打印(){
coutprint();
返回0;
}
请注意,此设计确保只能从类中创建一个实例。除了描述问题外,请显示一个代码示例。这是一个非常奇怪的要求,似乎是反模式的。实际要求和推理是什么?声明构造函数
private
,然后声明main()
作为类的一部分,你所说的“类的初始值设定项”是什么意思?除了描述问题外,请展示一个代码示例。这是一个相当奇怪的要求,似乎是反模式的。实际的要求和理由是什么?声明构造函数private
,然后声明main()
作为类的一员,“类的初始值设定项”是什么意思?这不是单例的好用法,但是如果你发现单例是一个很合适的例子,更喜欢使用a,因为当事情变得更复杂时,它更容易,也不太可能在你脸上爆炸。是的!我明白了!谢谢。这不是单例的好用法,但是如果你发现单例是一个很合适的例子,更喜欢使用a,因为它更适合你当事情变得更复杂时,你的脸会更容易爆炸。是的!我明白了!谢谢。让main
完全访问这个类的所有内部内容似乎有点错误。我不认为这个问题有一个好的解决方案。让main
完全访问所有的int似乎有点错误我认为这个问题没有一个好的解决方案