Consider this class:
class Downloader {
private:
        bool video_or_audio;
        // other variables [...]
        // [...]
        void downloadVideo(std::string videoURL);
        void downloadAudio(std::string audioURL);
public:
        void download();
}
Now, download() is defined this way:
void Downloader::download(){
        std::ifstream url_list;
        void (*download_func)(std::string) = video_or_audio == 0 ? downloadVideo : downloadAudio; // Compiler says here: "Reference to non static member function must be called".
  
        if(video_or_audio == 0){
                url_list.open("video_list.txt");
        }
        else{
                url_list.open("audio_list.txt");
        }
        std::string url;
        while(std::getline(url_list, url)){
                download_func(url); // Calling the function pointed by the pointer defined in line 2 of the function download().
        }
}
My compiler (clang) says: "Reference to non static member function must be called" in the second line of function download() definition. Why is this happening and how can I solve this problem?
A solution appears to be defining downloadVideo() and downloadAudio() functions to be static in the class declaration. However, if I do so, I cannot access private variables members of class Downloader, that's not desirable, as I need these variables.
Thank you!
 
    