在' const '错误之前预期的主表达式
expected primary-expression before ‘const’ errors
请帮忙。我得到很多错误。
sub2.cpp: In function ' int main() ':Sub2.cpp:11:14:错误:从' const char* '到' char '的无效转换[-fpermissive]Sub2.cpp:12:14:错误:从' const char* '到' char '的无效转换[-fpermissive]Sub2.cpp:16:17:错误:' const '之前预期的主表达式Sub2.cpp:16:36:错误:' const '之前预期的主表达式sub2.cpp:11:6:警告:未使用的变量' outer ' [- unused-variable]sub2.cpp:12:6:警告:未使用的变量' inner ' [- unused-variable]make: * [sub2] Error 1
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
char *Subtract(const char *outer, const char *inner);
int main()
{
char outer = "Bookkepper";
char inner = "keep";
char *word = new char[50];
word = Subtract(const char &outer, const char &inner);
cout << word << endl;
return 0;
}
char *Subtract(const char *outer, const char *inner)
{
int olen = strlen(outer);
int first_occ_idx = -1;
for(int i=0; i < olen; i++){
if(strncmp(outer+i, inner,strlen(inner)) == 0){
first_occ_idx = i;
}
}
if(first_occ_idx == -1){
return NULL;
}
int ilen = strlen(inner);
int xx = olen - ilen;
char *newstr = new char[xx];
int idx = 0;
for(int i=0; i < first_occ_idx; i++){
newstr[idx++] = outer[i];
}
for(int i=first_occ_idx+ilen; i < olen; i++){
newstr[idx++] = outer[i];
}
newstr[idx] = ' ';
return newstr;
}
在c++中,像"Bookkepper"
(sic)这样的字符串字量是const
字符指针,它比C中更严格,所以它应该是:
const char *outer = "Bookkeeper"; // Note also spelling
而不是:
char outer = "Bookkepper";
另外,当调用函数时不包含类型,因此:
word = Subtract(const char &outer, const char &inner);
最好是:
word = Subtract(outer, inner);
单独(这些只是样式建议),表示大小(例如字符串中的字符数)的正确类型是size_t
而不是int
。
通常认为明确清理所有动态内存是一种好形式,因此,在从main()
返回之前,您可以输入:
delete[] word;
相关文章:
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 编译器在传递 const 变量时返回错误:模板参数不是常量表达式
- C++:从类型"int*"的表达式初始化类型"const int*&"的引用无效
- "const int <variable>" 不能出现在常量表达式中
- C 表达式必须具有类型 - 字符串到const char*
- 错误:从类型"testGetter* const"的表达式初始化类型"const testGetter*&"的引用无效
- 尝试使用 uint*& 作为常量单元*&失败:从类型"uint8_t"的表达式初始化类型"const uint8_t*&"的引用无效
- C++中的const双表达式
- const之前应为主表达式,与运算符[]不匹配
- unordered_set:二进制表达式的操作数无效("const Play"和"const Play")
- 错误:从类型"const int"的表达式初始化类型"int"的引用无效
- find_if错误:从类型为"node*"的表达式初始化类型"const node&"的引用无效
- 类型为"const CompareVPtrs"的表达式将丢失一些常量易失性限定符以调用
- C++ - "Most important const"不适用于表达式?
- 来自另一个类的 switch 语句中的静态 const int 会导致错误 C2051:案例表达式不是常量
- 二进制表达式的操作数无效(“std::ostream”(又名“basic_ostream
”)和“const - 带有 Qt 的正则表达式 - indexIn(const QString &) 无法按预期工作
- const变量作为非类型模板参数(variable不能出现在常量表达式中)
- 禁用特征表达式到const引用的临时绑定
- 错误:当通过P2P通道连接两个NodeContainers时,期望主表达式在ns3中的const之前