Array operation for computing the dot product?

retard re at tard.com.invalid
Fri Feb 5 16:25:44 PST 2010


Fri, 05 Feb 2010 16:03:22 -0800, Walter Bright wrote:

> retard wrote:
>> Fri, 05 Feb 2010 13:24:44 -0800, Walter Bright wrote:
>> 
>>> retard wrote:
>>>>   {protection-attr} == perhaps one of these
>>>>   {public|protected|package|
>>>> private} - I have no effing clue what this does
>>> It actually does the same thing as it does in C++ (with the addition
>>> of package).
>> 
>> I see. I only noticed now that dmd actually does enforce this rule in
>> some cases. Unfortunately the rule is checked only statically when it
>> can be checked. If you access the object via base class or interface
>> type reference, a runtime check is not made unlike in c++.
> 
> There must be some misunderstanding here. There are no runtime access
> checks in C++, it is all done statically at compile time.

Thanks. It seems I have been testing this with a buggy c++ compiler or 
can't remember what was the problem previously. I now tried with gcc 
4.4.3 and this is how D and C++ differ:

---

class Foo {
  public:
  void bar() {}
};

class Bar : private Foo {
};

int main() {
  Foo *a = new Bar();
  a->bar();
}

test.cpp: In function ‘int main()’:
test.cpp:10: error: ‘Foo’ is an inaccessible base of ‘Bar’

---

module m1;

class Foo {
  public void bar() {}
}

class Bar : private foo {
}

module m2;
import m1;

void main() {
  Foo a = new Bar();
  a.bar();
}

// compiles and runs just fine
// Changing the 'Foo a = ...' into 'Bar a = ...' makes this an error



More information about the Digitalmars-d mailing list