Предполагая, что у меня есть 2 перегруженных метода в классе, показанном ниже. Пожалуйста, игнорируйте необходимость такой странной перегрузки методов, с которой я недавно столкнулся.
class A{
public:
//Lets call this method 1
int GetVal(bool isCondition) const
{
//do something and return val
}
//Lets call this method 2
template<typename T>
int GetVal(T expression)
{
//do something using expression
//and return val
}
};
int main()
{
A obj;
int val = obj.GetVal(false) << std::endl; //I want to invoke method 1
}
В функции main()
я хочу вызвать метод1, а не метод2. Как я могу этого добиться? Спасибо за чтение
const
, он другой: метод шаблона лучше подходит. В этом случае вы можете следовать предложениям Jarod42 (статическое приведение или SFINAE) или также путем Wanderer (сделатьconst
также методом шаблона) или просто вызватьGetVal()
вmain()
, используяstatic_const
:std::cout << static_cast<A const>(obj).GetVal(false) << std::endl;
21.03.2019