Instantiation of function 'x' required here, here but no definition is available


#1

Hi!

Why are these warnings shown by qtcreator in the editor, but it still compiles fine?
How should the code be changed so the warnings are gone?

    gui.setup();
    gui.add(nPasses.setup("nPasses",1,0,10)); // instantiation of function 'ofxSlider<int>::setup' required here, but no definition is available
    gui.add(offset.setup("offset",1.0,0,20.0));  // instantiation of function 'ofxSlider<float>::setup' required here, but no definition is available
    gui.loadFromFile("settings.xml");

#2

If you use ofxFloatSlider and ofxIntSlider instead, do the warnings disappear?


#3

That’s how they are already declared in the .h file:

    ofxPanel gui;
    ofxIntSlider nPasses;
    ofxFloatSlider offset;

Is that what you meant?


#4

Using ofParameter<int> or ofParameter<float>, and calling par.set("my par", 1,0,10) always worked for me without any warning.


#5

That works great.

The ofxIntSlider and ofxFloatSlider are from an (old) addon, probably outdated.
Now I know how to update the examples to use the current approach :slight_smile:


#6

you can use both declaring directly the slider or the parameter but it’s recommended to use the parameter. another way to do it, i think the best cause it’s the least verbose and the parameter range and defaults are near the declaration, is directly in the .h as:

ofParameter<int> nPasses{ "nPasses", 1, 0, 10 };
ofParameter<float> offset{ "offset", 1.f, 0.f., 20.f };
ofParameterGroup parameters{
    "settings"
    nPasses,
    offset
};
ofxPanel panel{parameters}

#7

Beautiful :slight_smile:

So to put it all together:

before

// .h
ofxPanel gui;
ofxIntSlider intA;
ofxFloatSlider floatB;

// .cpp
gui.setup();
gui.add(intA.setup("A", 1, 0, 10));
gui.add(floatB.setup("B", 1.0f, 0, 20.0f));
gui.loadFromFile("settings.xml");

c++11

// .h
ofParameter<int> intA { "A", 1, 0, 10 };
ofParameter<float> floatB { "B", 1.0f, 0, 20.0f };
ofParameterGroup parameters { "settings", intA, floatB };
ofxPanel gui { parameters };

// .cpp
gui.loadFromFile("settings.xml");

#8

this is not 0.10 specific just something you can do since c++11 so it’s been working for a while


#9

Ok, I changed oF0.10 to c++11 :slight_smile:

ps. there was a , and ; missing in your example so I added them to my post.