编译器无法识别重载的构造函数C ++

ise濑

我正在尝试为基本的编译器创建符号表。我的Symbol类中有2个构造函数,一个有4个参数,一个有5个。我有一个简单的main函数,它试图创建一个Symbol对象,接受4个参数,然后再创建5个参数。编译器抱怨Symbol b具有5个参数:

error: no matching function for call to ‘Symbol::Symbol(std::string&, std::string&, int, kind, int)’
symbol.h:14: note: candidates are: Symbol::Symbol(const Symbol::string&, const Symbol::string&, int, kind)
 symbol.h:6: note:                 Symbol::Symbol(const Symbol&)

我不确定为什么说没有匹配的函数,因为它在那里。尽管我不确定“ const Symbol :: string&”是否不同于“ std :: string&”会导致某些问题,或者如果出现这种情况该如何解决。

这是主要的:

int main(){
    string x="x";
    string y="y";
    Symbol a(x,"int",0,SCALAR);
    Symbol b(y,"char",0,ARRAY,5);

    //operator << is overloaded
    cout << a << endl;
    cout << b << endl;
    return 0;
}

symbol.h:

#ifndef SYMBOL_H
#define SYMBOL_H
#include "type.h"
#include <string>

class Symbol{
    typedef std::string string;
    string _name;
    Type _type;

public:
    const string& getName() const;
    const Type& getType() const;
    Symbol(const string& name, const string& specifier, int indirection, kind kind); 
    Symbol(const string& name, const string& specifier, int indirection, kind kind, int length); 
};

std::ostream& operator<<(std::ostream& ostr, const Symbol& symbol);

#endif /*SYMBOL_H*/

symbol.cpp

#include "symbol.h"
#include <iostream>
using namespace std;

/*other member function definitions*/

Symbol::Symbol(const string& name, const string& specifier, int indirection, kind kind)
{
    _name = name;
    Type a(specifier,indirection,kind);
    _type = a;
}

Symbol::Symbol(const string& name, const string& specifier, int indirection, kind kind, int length)
{
    _name = name;

    /*Type is another class that holds the description of the type of the     
     *particular variable, function,etc. declaration
     */

    Type a(specifier,indirection,kind,length);
    _type = a;
}
ise濑

有一个预编译的头文件(.gch)必须已经过时。删除并重新编译就可以了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编译器无法识别函数重载,因为类型已删除。如何克服呢?

来自分类Dev

类继承:编译器无法识别的类的构造函数和成员函数

来自分类Dev

编译器无法找到正确的函数重载

来自分类Dev

Spring4D TMultiMap重载的构造函数无法在编译器中看到(错误E2250)

来自分类Dev

C ++编译器选择了错误的重载函数

来自分类Dev

C ++ gcc函数模板重载编译器问题

来自分类Dev

为什么CodeBlocks编译器无法识别我在C的头文件中声明的函数?

来自分类Dev

编译器选择错误的重载函数

来自分类Dev

C ++编译器无法识别std :: stringstream :: swap

来自分类Dev

C ++ 11编译器的构造函数继承生成错误

来自分类Dev

编译器无法识别标志

来自分类Dev

CLion无法识别Cygwin编译器

来自分类Dev

编译器无法识别定义的类型

来自分类Dev

编译器无法识别架构

来自分类Dev

编译器错误:无法将重载函数与两个参数绑定

来自分类Dev

无法使用Intel编译器强制内联C ++函数

来自分类Dev

编译器构造

来自分类Dev

使用GCC在C中进行函数重载-编译器警告

来自分类Dev

涉及“使用”别名的成员函数重载解析中的Intel C ++编译器错误?

来自分类Dev

C ++编译器无法使用我的重载<运算符进行位集键比较

来自分类Dev

编译器如何选择正确的重载函数?

来自分类常见问题

为什么Java编译器在构造函数实例化中无法跟踪泛型类型?

来自分类Dev

编译器无法推断泛型类构造函数类型的原因是什么?

来自分类Dev

为什么C ++编译器是内联的综合函数(例如默认构造函数)?

来自分类Dev

AngularJS控制器构造函数和编译器

来自分类Dev

在Mac OS上,CUDA mathfunctions.hpp编译器错误:无法重载按返回类型区分的函数

来自分类Dev

C++ 方法覆盖和重载(编译器级别)

来自分类Dev

我的编译器无法识别资源和ID

来自分类Dev

Boost.Spirit编译器无法识别std :: pair

Related 相关文章

  1. 1

    编译器无法识别函数重载,因为类型已删除。如何克服呢?

  2. 2

    类继承:编译器无法识别的类的构造函数和成员函数

  3. 3

    编译器无法找到正确的函数重载

  4. 4

    Spring4D TMultiMap重载的构造函数无法在编译器中看到(错误E2250)

  5. 5

    C ++编译器选择了错误的重载函数

  6. 6

    C ++ gcc函数模板重载编译器问题

  7. 7

    为什么CodeBlocks编译器无法识别我在C的头文件中声明的函数?

  8. 8

    编译器选择错误的重载函数

  9. 9

    C ++编译器无法识别std :: stringstream :: swap

  10. 10

    C ++ 11编译器的构造函数继承生成错误

  11. 11

    编译器无法识别标志

  12. 12

    CLion无法识别Cygwin编译器

  13. 13

    编译器无法识别定义的类型

  14. 14

    编译器无法识别架构

  15. 15

    编译器错误:无法将重载函数与两个参数绑定

  16. 16

    无法使用Intel编译器强制内联C ++函数

  17. 17

    编译器构造

  18. 18

    使用GCC在C中进行函数重载-编译器警告

  19. 19

    涉及“使用”别名的成员函数重载解析中的Intel C ++编译器错误?

  20. 20

    C ++编译器无法使用我的重载<运算符进行位集键比较

  21. 21

    编译器如何选择正确的重载函数?

  22. 22

    为什么Java编译器在构造函数实例化中无法跟踪泛型类型?

  23. 23

    编译器无法推断泛型类构造函数类型的原因是什么?

  24. 24

    为什么C ++编译器是内联的综合函数(例如默认构造函数)?

  25. 25

    AngularJS控制器构造函数和编译器

  26. 26

    在Mac OS上,CUDA mathfunctions.hpp编译器错误:无法重载按返回类型区分的函数

  27. 27

    C++ 方法覆盖和重载(编译器级别)

  28. 28

    我的编译器无法识别资源和ID

  29. 29

    Boost.Spirit编译器无法识别std :: pair

热门标签

归档