On Wed, Feb 7, 2018 at 4:32 PM, Alex Chen <[email protected]> wrote:

> I am trying to port the protocol buffer library to Green Hills Integrity
> on a PPC platform. When compiling the library, I ran into the following
> compiler error:
>
> "..\vendor\protobuf\src\google/protobuf/reflection_internal.h", line 306:
> error #1001:
>           class member designated by a using-declaration must be visible
> in a
>           direct base class
>     using RepeatedFieldAccessor::Add;
>
> Below is the code snippet where the error occured in reflection_internal.h:
>
> class RepeatedPtrFieldStringAccessor : public RepeatedPtrFieldWrapper<string>
> {
>   typedef void Field;
>   typedef void Value;
>   using RepeatedFieldAccessor::Add;
>
>  public:
>   RepeatedPtrFieldStringAccessor() {}
> };
>
> It seems the statement "using RepeatedFieldAccessor::Add" is trying to
> access the member function Add() that is two levels higher in the class
> hierarchy, which is not allowed by the compiler because it is not a direct
> base class. If my explanation is confusing, I wrote a small snippet of code
> below that simulates the same problem:
>
> class A
> {
> public:
>     virtual void foo() {}
> };
>
> template<typename T>
> class B : public A
> {
> public:
>     virtual void foo() {}
> };
>
> class C : public B<std::string>
> {
>     using A::foo;
> };
>
> I am to successfully compile the protobuf library using Microsoft Visual
> Studio and Linux GNUC, but not MULTI Integrity compiler. I consulted with
> Green Hills and they say that syntax is illegal. They even pointed me to
> this link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32039
>
Reading the thread reminds me how difficult C++ is... Is there any way I
can run this MULTI Integrity compiler on my macosx, linux or windows? Or
can you ask Green Hills what other compiler can reproduce the same problem?


>
> Does anyone know how to workaround this issue? I rather not have to modify
> the protobuf library code to fix it.
>
> Thanks,
>
> -Alex
>
> --
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/protobuf.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to