【发布时间】:2012-03-18 06:04:36
【问题描述】:
错误:
g++ -Wall -Wextra -ansi -pedantic Testr.cc classE.cc classC.cc
classE.cc:46:14: error: expected unqualified-id before '&'token
classC.cc:46:14: error: expected unqualified-id before '&'token
编译器引用的行:
classE classE::&operator%(classB &rhs){
编译器正在讨论 'classE::&operator%' 表达式中的 '&';我会尽快删除与号,但作业(是的任意家庭作业指南)需要它。我什至不确定&符号应该做什么。类似的运算符重载方法使用相同的大纲没有问题,我通过google和教科书空手而归。
在参数中指定派生类(classB.h 是纯虚拟的)也不能清除这些错误。
因为其他类似定义的运算符都可以正常工作,所以我认为问题出在实现上。基本思想是获取两个类 B 派生对象(类 C 或类 E),并将每个对象包含的字符串变量与另一个对象交错,返回包含交织字符串的 lhs 类型对象。 classE 实现实际上与 classC 实现完全相同:
classC classC::&operator%(classB &rhs){ //Interleave two classB-derived objects, return object of lhs-type
string temp = rhs.str(), temp2 = restore(), result = "";
int a = temp.size(), b = temp2.size(), max;
if (temp2.size() > temp.size()){
max = temp2;
}
else{
max = temp;
}
for (int i = 0; i < max; i++){
if (i < a){
result += temp2[i];
}
if (i < b){
result += temp[i];
}
}
return classC(result);
}
对不起,我是新来的;我不知道如何在代码块中添加行号 =-\
感谢您阅读并考虑我的问题。 =-)
编辑:我担心这会是一个令人尴尬的愚蠢错误;将行更改为 classE& classE::operator%(classB &rhs){ 为大量新错误打开了闸门。嘿,就在我以为我掌握了 C++ 的时候。非常感谢,伙计们。我希望我以后的所有问题都一样简单。
【问题讨论】:
标签: c++ overloading operator-keyword