Error C2259: 'juce::Typeface' under VS2012


#1

Hi, 

Am trying to build a version of our plugin using VS2012.

We are getting a weird issue where by CustomTypeface implements Typefaces pure virtual functions in JUCE and it all looks fine, but VS2012 still is throwing a C2259 error. We don't inherit from custom typefaces anywhere in our own code and it works fine on xcode, have cut and pasted the compiler output below...

Gavin.

 


1>c:\plugins\plugins\jucelibrarycode\modules\juce_core\containers\juce_array.h(771): error C2259: 'juce::Typeface' : cannot instantiate abstract class (..\..\Source\ModuleComponent.cpp)
1>          due to following members:
1>          'float juce::Typeface::getAscent(void) const' : is abstract
1>          c:\plugins\plugins\jucelibrarycode\modules\juce_graphics\fonts\juce_typeface.h(82) : see declaration of 'juce::Typeface::getAscent'
1>          'float juce::Typeface::getDescent(void) const' : is abstract
1>          c:\plugins\plugins\jucelibrarycode\modules\juce_graphics\fonts\juce_typeface.h(89) : see declaration of 'juce::Typeface::getDescent'
1>          'float juce::Typeface::getHeightToPointsFactor(void) const' : is abstract
1>          c:\plugins\plugins\jucelibrarycode\modules\juce_graphics\fonts\juce_typeface.h(94) : see declaration of 'juce::Typeface::getHeightToPointsFactor'
1>          'float juce::Typeface::getStringWidth(const juce::String &)' : is abstract
1>          c:\plugins\plugins\jucelibrarycode\modules\juce_graphics\fonts\juce_typeface.h(100) : see declaration of 'juce::Typeface::getStringWidth'
1>          'void juce::Typeface::getGlyphPositions(const juce::String &,juce::Array<ElementType> &,juce::Array<float> &)' : is abstract
1>          with
1>          [
1>              ElementType=int
1>          ]
1>          c:\plugins\jucelibrarycode\modules\juce_graphics\fonts\juce_typeface.h(106) : see declaration of 'juce::Typeface::getGlyphPositions'
1>          'bool juce::Typeface::getOutlineForGlyph(int,juce::Path &)' : is abstract
1>          c:\plugins\plugins\jucelibrarycode\modules\juce_graphics\fonts\juce_typeface.h(111) : see declaration of 'juce::Typeface::getOutlineForGlyph'
 


#2

Trying to instantiate an Array<Typeface> maybe? That ain't gonna work!


#3

HI Jules,

We do try and instantiate a CustomTypeface in the code, but thats it. 

Gavin.


#4

No.. look at the error. It's telling you that it can't instantiate an Array class, because you're giving it a template param that isn't a copy-by-value type.