相关疑难解决方法(0)

私有,公共和受保护继承之间的区别

是什么区别public,private以及protected用C++继承?我在SO上发现的所有问题都涉及具体案例.

c++ inheritance encapsulation c++-faq access-specifier

952
推荐指数
14
解决办法
65万
查看次数

C++的朋友继承?

子类是否继承,主类的朋友关联(主类'自己和其他类与主类相关)?

或者换句话说,继承如何应用于friend关键字?

扩展:如果没有,有没有办法继承友谊?

我遵循Jon的建议来提出设计问题:
C++类设计问题

c++ subclass friend

34
推荐指数
3
解决办法
2万
查看次数

指向基类和私有继承的指针

以下简单示例将产生编译器错误,因为我意外地使用私有继承:

main.cpp:21:错误:'A'是'B'无法访问的基础

class A
{


};

class B : /*ups forgot that -> public*/ A
{


};

int main(int , char *[])
{
    A* test = new B;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

你能不能帮我解释一下究竟是在基类交通不便,为什么需要从转换B*A*

c++

10
推荐指数
2
解决办法
2211
查看次数

c ++中受保护和私有派生的区别是什么

可能重复:
C++中private,public和protected继承之间的区别

在c ++中导出为protected或private有什么区别?我无法弄清楚,因为两者似乎都限制了派生类对象的基类成员访问

c++

8
推荐指数
2
解决办法
4049
查看次数

c ++继承语法

可能重复:
什么是访问说明符?我应该继承私人,受保护还是公共?
C++中private,public和protected继承之间的区别

对于所有cpp专家,在c ++继承中,

class B : public A {
};
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么关键字public需要在这里?这是什么意思吗?

c++ inheritance

8
推荐指数
1
解决办法
8161
查看次数

使C++类继承自C Structs,推荐?

我最近做了一些Windows Api编码(仍在做).我试图找到将WNDCLASSEX包装成C++类的最佳方法,当我有这个疯狂的想法时,WNDCLASSEX是一个结构对吗?(尽管它是用c编写的)并且在C++中结构被视为类,所以为什么我不将我的WinCLass声明为WNDCLASSEX的衍生物,所以我试过:

 class WinClass : protected WNDCLASSEX
Run Code Online (Sandbox Code Playgroud)

它奏效了!然后我尝试使用它与SDL结构,但那些也有效.但是当我从它们派生类时,某些结构(特别是SDL结构)要么不编译或导致无法解释的运行时错误.所以我的问题是:推荐使用这种C结构吗?它实际上是专业人士使用的,还是只是一个蹩脚的黑客?我应该使用我的包装器还是应用程序,还是只会引入无法解释的错误?

c++ struct class

7
推荐指数
1
解决办法
1967
查看次数

C++ Singleton 使用:编译器抱怨私有构造函数

我知道有一百万个关于单身人士的问题和答案,但我似乎找不到解决方案。因此,冒着投反对票的风险,这就是我的问题:

\n\n

我想使用 Andrei Alexandrescu 现代 C++ 设计中的单例实现:

\n\n

标头:

\n\n
class Singleton\n{\n    static Singleton& Instance();\n  private:\n    Singleton(){};\n    Singleton(const Singleton&){};\n    Singleton& operator=(const Singleton&){};\n    ~Singleton(){};\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

执行:

\n\n
#include "s.hh"\n\nSingleton& Singleton::Instance()\n{\n    static Singleton instance;\n    return instance;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

测试:

\n\n
#include "s.hh"\n\nint main(void)\n{\n    Singleton& single = Singleton::Instance();\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,

\n\n
$g++ A.cc s.cc  && ./a.out \nIn file included from A.cc:1:0:\ns.hh: In function \xe2\x80\x98int main()\xe2\x80\x99:\ns.hh:3:19: error: \xe2\x80\x98static Singleton& Singleton::Instance()\xe2\x80\x99 is private\n static Singleton& Instance();\n               ^\nA.cc:6:42: error: within this context\n  Singleton& single …
Run Code Online (Sandbox Code Playgroud)

c++ singleton design-patterns

4
推荐指数
1
解决办法
5398
查看次数

C++,请向Python用户解释类?

我正在尝试学习C++,感谢这篇文章,我发现C++和Python以及Javascript之间存在许多相似之处:http://www.cse.msu.edu/~cse231/python2Cpp.html

但我根本无法理解C++类,它们看起来像Javascript原型,但并不那么容易.

例如:

//CLxLogMessage defined in header

class myLOG: public CLxLogMessage{
  public:
    virtual const char *    GetFormat (){
            return "Wavefront Object";
    }

    void    Error (const std::string &msg){
            CLxLogMessage::Error (msg.c_str ());
    }

    void    Info (const std::string &msg){
            CLxLogMessage::Info (msg.c_str ());
    }

 private:
    std::string     authoringTool;
};
Run Code Online (Sandbox Code Playgroud)

问题:这是什么公共/私人的东西!?

编辑:老实说,我比Python更喜欢C++,因为我可以学习所有内容的真实含义,而不是简单的自动命令,例如我更喜欢单独使用"int X"而不是"X".

谢谢

c++

2
推荐指数
1
解决办法
191
查看次数

c中"PRIVATE int func_name()"中的"PRIVATE"是什么?

我有一个以下的C函数,

PRIVATE int func_name()
{
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

"PRIVATE"在这里意味着什么?

c

2
推荐指数
1
解决办法
108
查看次数

继承和多态

所以我现在正在学习c ++类中的继承,并试图将所有术语都放在一边.我理解受保护和私有之间的区别.但是当你创造一个功能时,朋友与公开它不是一回事吗?

他们用来教导继承的例子是形状,所以:

class shape{
   struct circle
   struct rectangle
   struct line
}
Run Code Online (Sandbox Code Playgroud)

这样的事情,说法之间有什么区别

class circle: shape
class circle: public shape
class circle: private shape (don't actually know if this one is possible)
Run Code Online (Sandbox Code Playgroud)

最后,关键字虚拟意味着/做/用于什么?谢谢

c++ polymorphism virtual inheritance friend

1
推荐指数
1
解决办法
1851
查看次数

在C++中无法访问的继承函数

我正在Visual C++ 2010中编写一个小程序.

这是基类的代码:

class BaseInfo {

private:
    std::map <std::string, std::string> info;
    std::vector<std::string> extra_info_key;
public:
    uint get_id ();
    //Other function is hidden
};

uint BaseInfo::get_id () {
    return (uint)atoi ((info["ID"]).c_str());
}
Run Code Online (Sandbox Code Playgroud)

然后我创建一个派生类,宣布为:

class test:BaseInfo {
public:
    void f();
};

void test::f (test& inf) {
    cout<<inf.get_id()<<endl;
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误:

函数"BaseInfo :: get_id无法访问.

我很困惑,似乎一切都在c ++规则中.

c++

0
推荐指数
1
解决办法
135
查看次数

与复制构造函数和私有成员混淆

假设我有以下课程:

class Test
{
             int num;
     public:
             Test(int x):num(x){}
             Test(const Test &rhs):num(rhs.num+1){}
};

int main()
{
      Test test(10);
      Test copy = test;
}
Run Code Online (Sandbox Code Playgroud)

num在副本应该是11,我的问题是关于拷贝构造函数里面,我们为什么不能访问私有成员numtest使用num来初始化num的副本?令我困惑的是,如果你输入cout<<test.num<<endl,当然这是错的,因为你试图访问私有num,但如果你通过参考复制构造函数传递测试,它可以工作,任何人都可以告诉我这里发生了什么?

c++

0
推荐指数
1
解决办法
2374
查看次数