C ++ Visual Studio重载函数错误:没有重载函数实例与指定类型匹配

时间:2018-07-01 15:42:03

标签: c++ visual-studio overloading

澄清:

该项目正在Visual Studio中完成,并使用了stdafx.h文件。

FText是字符串的别名,如文件stdafx.h中所建立:

#include <string>

using FText = std::string;
using int32 = int;

stdafx.h包含在View.cpp类中。

原始问题:

因此,我试图创建一种基于一个或两个参数来打印字符串的打印方法:一个数字参数,指示要打印的消息,以及在消息中使用的输入。到目前为止,我有方法“ print”的三个实例,如下所示:

///A method that prints a message
//give it a number to tell it what message to print.
void Display::print(int message)
{

    switch (message)
    {
        case 0:
            std::cout << "Welcome to Cows and Bulls, a simple word-guessing game. \n";

            break;
        case 1:
            //(I omitted most of the messages to save space)
            break;
        default:
            std::cout << "Something has gone horribly wrong. \n";
            std::cout << "Goodbye. \n";
            throw std::exception();
    }


}

//messages with one int parameter
void Display::print(int message, int param)
{

    switch (message)
    {
        case 0:

            break;
        default:
            std::cout << "Something has gone horribly wrong. \n";
            std::cout << "Goodbye. \n";
            throw std::exception();
    }

}

//messages with one string parameter
void Display::print(int message, FText param)
{

    switch (message)
    {
    case 0:

        break;
    default:
        std::cout << "Something has gone horribly wrong. \n";
        std::cout << "Goodbye. \n";
        throw std::exception();
    }

}

我还没有向第二个和第三个重载中添加任何消息,但是我会解决的。

程序视图部分的头文件中的类声明如下:

#pragma once

//The method that prints thing to the screen



class Display
{

    public:

        void print(int message);

        //print a message with a parameter other than the message being selected

        void print(int message, int param);

        void print(int message, FText param);

};

print方法的前两个实例工作正常,但是第三个实例(将字符串/ FText作为参数的实例)给我以下错误:

"no instance of overloaded function "CowsAndBulls::Display::print" matches the specified type"

为了使代码更加清晰,代码仍然可以编译,并且我还没有使用此功能:在此版本的打印文件的定义中出现错误。

我可以肯定我只是缺少一些简单的东西,但是快速搜索堆栈溢出的问题并没有给我带来与此完全相同的另一个问题(或者也许我只是没有认出另一个帖子是同样的问题?)

无论哪种方式,我们将不胜感激。

1 个答案:

答案 0 :(得分:-1)

好吧,好像我忘了把stdafx.h包含在View类头文件中。虽然cdp文件中包含了stdafx.h(并扩展为FText),但头文件显然不知道它是什么。这让我失望,因为该错误显示在cpp文件中。

供以后参考,有人知道为什么吗?