(C ++)没有构造函数的实例...匹配参数列表

时间:2015-12-01 10:46:54

标签: c++ object parameters constructor

刚开始学习C ++,我正在完成一项任务,在控制台中显示彩色符号和文本。为此我创建了一个笔对象,但是我收到的错误是“没有构造函数的实例匹配参数列表”但是我相信我传递了正确的参数。

我一直在摸不着头脑,现在强调这一点超过2个小时,我希望有人能够找到我出错的地方并指出我正确的方向。

感谢。

主要方法:

//#include "stdafx.h"
#include <iostream>
#include "tui.h"

using namespace std;
using namespace textUserInterface;

int main()
{

cout << "Testing..." << endl;

byte testColor = color::red;
pen myPen(color::red, color::black, "@", true); //Error on this construction

return 0;
}

Tui标头文件:

#ifndef TUI_H
#define TUI_H

typedef unsigned char byte;

namespace textUserInterface {

class tui
{
public:
    tui();
protected:
private:
};

class color
{
public:
    static const byte magenta = 5;
    static const byte yellow = 3;
    static const byte red = 1;
    static const byte white = 7;
    static const byte green = 2;
    static const byte blue = 4;
    static const byte black = 0;
    static const byte system_default = 0;
private:
    color();
};

class pen
{
public:
    pen(byte _foreground, byte _background, char _character, bool _isBright);
private:
    byte foreground;
    byte background;
    char character;
    bool isBright;
};
}
#endif

Tui cpp文件:

#include <iostream>
#include "tui.h"

using namespace std;
using namespace textUserInterface;

tui::tui()
{

}

pen::pen(byte _foreground, byte _background, char _character, bool _isBright)
: foreground(_foreground), background(_background), character(_character), isBright(_isBright)
{

}

2 个答案:

答案 0 :(得分:3)

问题是构造函数需要char,但您传递的是C风格的字符串"@"。您需要使用单引号来获取单个char,即'@'

如果你有一个好的编译器,那么它应该给你一条错误信息:“无法从const char *转换为参数3中的char。”

答案 1 :(得分:2)

pen myPen(color::red, color::black, "@", true);

"@"const char[2],您尝试将其作为char参数传入。

你可能意味着'@'

pen myPen(color::red, color::black, '@', true);