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

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.

Reply via email to