Error: invalid use of non-static member function


I’ve created a new audio application from projucer, and I’ve Changed the MainComponent to have a combobox, like so:


    This file was auto-generated!



#include "../JuceLibraryCode/JuceHeader.h"

    This component lives inside our window, and this is where you should put all
    your controls and content.
class MainContentComponent   : public AudioAppComponent
        setSize (800, 600);

        // specify the number of input and output channels that we want to open
        setAudioChannels (2, 2);


    void prepareToPlay (int samplesPerBlockExpected, double sampleRate) override
        // This function will be called when the audio device is started, or when
        // its settings (i.e. sample rate, block size, etc) are changed.

        // You can use this function to initialise any resources you might need,
        // but be careful - it will be called on the audio thread, not the GUI thread.

        // For more details, see the help for AudioProcessor::prepareToPlay()

    void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) override
        // Your audio-processing code goes here!

        // For more details, see the help for AudioProcessor::getNextAudioBlock()

        // Right now we are not producing any data, in which case we need to clear the buffer
        // (to prevent the output of random noise)

    void releaseResources() override
        // This will be called when the audio device stops, or when it is being
        // restarted due to a setting change.

        // For more details, see the help for AudioProcessor::releaseResources()

    void paint (Graphics& g) override
        // (Our component is opaque, so we must completely fill the background with a solid colour)
        g.fillAll (Colours::black);

        // You can add your drawing code here!

    void resized() override
        // This is called when the MainContentComponent is resized.
        // If you add any child components, this is where you should
        // update their positions.
    static ComboBox OutputsBox();


    // Your private member variables go here...


// (This function is called by the app startup code to create our main component)
Component* createMainContentComponent()     { return new MainContentComponent(); }


and when I try and compile, I get the following error:

../../Source/MainComponent.cpp: In constructor ‘MainContentComponent::MainContentComponent()’:
../../Source/MainComponent.cpp:26:37: error: invalid use of non-static member function ‘juce::ComboBox MainContentComponent::Outputsbox()’
../../Source/MainComponent.cpp:84:14: note: declared here
     ComboBox Outputsbox();

Any help?


If you have trailing brackets after a declaration


then this indicates that OutputsBox is a function, rather than a variable.

Also, does it really need to be static?

I think some reading about general C++ concepts might be useful before diving into JUCE.