Wie können Sie abhängig von einer Bedingung unterschiedliche Typen aus einer Funktionsvorlage zurückgeben?C++

Programme in C++. Entwicklerforum
Anonymous
 Wie können Sie abhängig von einer Bedingung unterschiedliche Typen aus einer Funktionsvorlage zurückgeben?

Post by Anonymous »

Ich habe den folgenden Code:
helper.hpp
:

Code: Select all

struct A {
uint32_t a, b;
};

struct B {
uint32_t a, b;
};

template 
struct C {
T barcode;
};
Jetzt möchte ich basierend auf einer Bedingung ein entsprechendes Strukturobjekt in main.cpp erstellen

Code: Select all

if(/* something */) {
C obj;
}
else {
C obj;
}
Das Problem besteht nun darin, dass ich außerhalb des if-Bereichs nicht darauf zugreifen kann.
Eine Möglichkeit, damit umzugehen, wäre, das Objekt von einer Funktion zurückzugeben, etwa so:

Code: Select all

template 
C getObject(){
if(/* something */) {
return C{};
}
else{
return C{};
}
}

auto obj = getObject()
aber das gibt mir den folgenden Kompilierungsfehler:

Code: Select all

error: no matching function for call to 'getObject()
note:   couldn't deduce template parameter 'T'
Wirklich dankbar für jede Hilfe.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post