可能重复:
C++:重写public\private继承
class base {
public:
virtual void doSomething() = 0;
};
class derived : public base {
private: // <-- Note this is private
virtual void doSomething()
{ cout << "Derived fn" << endl; }
};
Run Code Online (Sandbox Code Playgroud)
现在,如果我执行以下操作:
base *b = new child;
b->doSomething(); // Calls the derived class function even though that is private
Run Code Online (Sandbox Code Playgroud)
题:
现在,如果我将继承访问说明符从public更改为protected/private,我会收到编译错误:
'type cast' : conversion from 'Derived *' to 'base *' exists, but is inaccessible
Run Code Online (Sandbox Code Playgroud)
注意:我知道继承访问说明符的概念.所以在第二种情况下,因为它是派生私有/受保护的,所以它是不可访问的.但我想知道第一个问题的答案.任何输入都将受到高度赞赏.
当我在vs2010 x64模式下编译我的C ++解决方案时,出现以下编译问题。
Can not open include file 'sys/param.h' :No such file or directory.
但是在Win32模式下,相同的编译效果很好。
我不确定该头文件如何丢失,有人可以帮我吗?我正在使用一些客户端头,这是客户端文件中存在的以下代码部分。
#ifndef WIN32
#include <sysipc.h>
#include <sys/param.h>
#endif
我使用Visual Studio 2010编写 C++ 应用程序。在其中之一中,我将类型从双精度转换为整数,如下所示:
intAmount = (int)doubleAmount;
Run Code Online (Sandbox Code Playgroud)
其中intAmount是整数类型,doubleAmount是双精度类型。
我尝试显示这些,但出现问题时doubleAmount = 16200000,它显示为,16199999
而在其他一些情况下,我没有遇到任何问题。
例如: whendoubleAmount = 15400000或 it is 18000000。这 2 个值显示正确。
经过一些分析,我明白这不是类型转换的正确方法。所以我将其修复如下:
intAmt = doubleAmount >= 0 ? (int)(doubleAmount+0.5) : (int)(doubleAmount-0.5);
Run Code Online (Sandbox Code Playgroud)
上述修复对我来说效果很好。
但我的问题是:为什么这个问题只存在于doubleAmount = 16200000.
任何人都可以请建议吗?
编辑请注意计算 doubleAmount = 0.81 * 20000000 等于 16200000
我有父表A.
A有几个子表,如B,C,D,E,F,G
子表不相互链接.它们只与...相关联A.
A有一个键Id在所有子表中用作外键.
加入这些表的最佳方法是什么,以便我可以创建一个单独的视图?