为什么派生类Derived_from_Private是非法的?我注意到成员函数引用了Base,但是为什么它不能引用Base类呢?
class Base {
public:
void pub_mem(); // public member
protected:
int prot_mem; // protected member
private:
char priv_mem; // private member
};
struct Pub_Derv : public Base {
// legal
void memfcn(Base &b) { b = *this; }
我正在学习,但我不明白以下内容。我有个像这样的东西
var serialnum = {
// This data property holds the next serial number.
// The $ in the property name hints that it is a private property.
$n: 10,
// Return the current value and increment it
get next() {
return this.$n++;
},
// Set a new value of
基本上,我在一个名称空间中有两个类,我想让一个类(称为B::fun)的一个方法访问另一个类的私有成员(称为class A)。然而,我似乎无法让它发挥作用。下面是一个简单的例子,说明了这个问题:
namespace ABC // this could be global too
{
class A;
class B
{
public:
int fun(A member);
};
class A
{
public:
friend int B::fun(A member);
private:
根据这个站点//:
如果显式声明默认构造函数,但将其标记为“删除”,则不能使用空大括号初始化:
它还举了一个例子:
class class_f {
public:
class_f() = delete;
class_f(string x): m_string { x } {} // if it is deleted, there will be no errors.
string m_string;
};
int main()
{
class_f cf{ "hello" };
class_f cf1{}; // compiler
g++拒绝我访问一个类型,仅仅因为它恰好是一个私有的祖父。这有意义吗?
struct A {};
struct B : private A {};
struct C : B {
void foo(A const& a) {}
};
编译此代码会产生以下结果:
1:10: error: ‘struct A A::A’ is inaccessible
6:12: error: within this context
我的观点是:我从来不想以祖先的身份访问A。事实上,如果A是B的私有祖先,那么除了B (即C)之外,这不是应该对任何人都是完全不可见的吗?
当然,我可以使用protect
可能重复:
我正在实现一个单例,如下所示。
class A
{
public:
static A& instance();
private:
A(void)
{
cout << "In the constructor" << endl;
}
~A(void)
{
cout << "In the destructor" << endl;
}
};
A& A::instance()
{
sta
看看这里:在下面的代码中,b的类型是什么?
struct A {
A (int i) {}
};
struct B {
B (A a) {}
};
int main () {
int i = 1;
B b(A(i)); // what would be the type of b
return 0;
}
如果有人能向我彻底解释为什么会有这样的语法存在,我将不胜感激:)
谢谢。
我有一个触发器在postgres中工作,它允许视图变得可更新。
CREATE OR REPLACE FUNCTION actualizaIDConductor() RETURNS
TRIGGER AS '
BEGIN
RAISE NOTICE ''Working'';
SELECT COUNT(*) INTO bool
FROM Infotrenes
WHERE cod_empleado = OLD.cod_empleado;
RAISE NOTIC
我有两个从抽象类扩展而来的类,每个类都有不同的值分配给同一个变量(例如。以及一组具有不同实现的其他方法。我不知道这看起来有多复杂,但它是实际类的一个大大简化的版本。
我更新了这篇文章,因为我想突出显示其他问题,所以不使用受保护的属性。
abstract class AsbtractClass<N extends "Matt" | "Tom", V extends 1 | 2> {
public abstract attributeName(): N;
public abstract attributeValue(): V;
public