【问题标题】:C++ Class Specification, Implementation problemC++ 类规范,实现问题
【发布时间】:2011-04-28 20:48:42
【问题描述】:

我在完成一些单独的编译时遇到了问题。很简单,但是我想不通这个错误。

我遇到了这些异常:

> 36 C:\Cpp\P6\employee.cpp expected `)' before ',' token 36
> C:\Cpp\P6\employee.cpp expectedinit-declarator before ')' token  36
> C:\Cpp\P6\employee.cpp expected `,' or `;' before ')' token  42
> C:\Cpp\P6\employee.cpp expected `)' before ',' token  42
> C:\Cpp\P6\employee.cpp expected init-declarator before ')' token  42
> C:\Cpp\P6\employee.cpp expected `,' or `;' before ')' token

对于此代码:

    /*line 36*/ Employee::Employee(n, id) { //constructor for name and ID

                            setName(n);
                            setID(id);
    };

   /*line 42*/ Employee::Employee(id, d, p, n) {//constructor for all member variables

                        setID(id);
                        setDept(d);
                        setPos(p);
                        setName(n);
    };

头文件看起来像(它们是公开的):

         Employee::Employee();
         Employee::Employee(std::string, int);
         Employee::Employee(int, std::string, std::string, std::string);

对这些错误的含义或如何修复它们有任何帮助吗?

【问题讨论】:

  • 另外:我收到了相同的错误,但标题中没有范围解析运算符。
  • 为什么你的构造函数里面没有数据类型? Employee::Employee(std::string n, int id)

标签: c++ class header implementation specifications


【解决方案1】:

你总是必须在变量名之前有一个类型。您在声明中有它,但在定义中没有。像下面这样的东西应该可以解决它:

Employee::Employee(std::string n, int id) { //constructor for name and ID

                            setName(n);
                            setID(id);
    };

第二个Employee 构造函数定义也是如此。

另外,最好通过常量引用而不是值传递std::string。而且……你的头像向左旋转了 45 度。

【讨论】:

  • 这就解决了。但是现在,编译器抱怨我的访问器/修改器没有被引用......
  • 因为这是家庭作业,一个小时后就要交了,我就拿我所有的。我只需将这些变量分配给这些参数即可使其工作。稍后我会弄清楚 getter 和 setter。感谢您的帮助。
  • 未定义的引用?编译器到底说了什么?这很有趣,但是在与编译器合作多年之后,您比试图描述它的人更了解它们的错误消息。呵呵
  • Derp - 未定义的引用是的。抱歉,我现在在很多事情之间来回跳动哈哈。
猜你喜欢
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多