我有一个定义如下的类。h:
#ifndef C1_H
#define C1_H
#include <iostream>
#include <map>
#include <string>
#include <vector>
class C1{
private:
std::map<std::string, std::vector<int>> cmap;
public:
C1();
~C1();
friend std::ostream& operator<< (std::ostream& os, const C1& c);
};
#endif
输出流函数有问题。在cpp文件中,我将其定义为:
ostream& operator<< (ostream& os, const C1& c) {
vector<string> strlist= //a vector of the strings associated in the map;
cout << *(strlist.begin()+3) << endl; //this was for testing where the error was
for (int j = 0; j < 9; j++) {
int size = c.cmap[*(strlist.begin() + j)].size();
for (int k = 0; k < size; k++) {
os << (c.cmap[*(strlist.begin()+j)]].[begin()+k])<<endl;
}
}
return os;
}
下面是std'const错误:,
错误:传递“const std::map,std::vector”
当我从ostream操作符重载的定义中删除const保护时,这个编译很好,但是,我相信我应该能够使用const保护来完成它,根据我的老师的说法,现在养成这个习惯是更好的做法。有谁能给我指点一下为什么这本书不能编译?
不过,由于ostream是一个friend类,我可以访问私有成员(像往常一样,我对大多数操作符使用相同的基本结构)
在:
int size = c.cmap[*(strlist.begin() + j)].size();
你应该写:
int size = c.cmap.at(*(strlist.begin() + j)).size();
相反
您正在通过c
作为const C1
std::map
对于操作符[]
没有const
重载,因为如果键不存在,操作符[]
将执行插入操作。这是为了使以下语句:
std::map<std::string, int> map;
map["test"] = 1;
工作
我不明白资格赛在哪里/为什么会被淘汰。 我在c()上得到一个编译器错误;生产线: 错误:传递“const std::\u Bind(A) 解决方法我不明白: > 将A::f()定义为const:void f()const{}; 对实例的引用:调用者(std::bind( 通过以下方式传递到lambda:自动l=[ g版本:
我有一个类缓存,它的函数write指定为 我这样调用这个函数。 上面的一行给了我以下错误 将“const Cache”作为“bool Cache::write(const MemoryAccess)”的“this”参数传递 this参数是特定于编译器的,它有助于代码混乱和中断本地命名空间变量优先级。但这样的变量并没有在这里传递。
在将Android Studio更新到北极狐和Android Gradle插件更新到7.0.0后,我面临着这个警告,我的意思是应用程序可以成功地构建这个警告,但我在这里遗漏了什么?这里有什么问题? 根据官方的视图绑定引用,我正在以正确的方式启用它。这是我的建筑。如果有人有兴趣检查。 有一些相关的问题,但我认为它们在这种情况下并不相关。 build.gradle:对“项目”的访问超出了其访问权限 启
以下代码在Green Hills C编译器中导致错误(错误:类型int*与参数类型const int*不兼容),而它只产生警告并使用gcc进行编译(警告:传递func的参数1会从指针目标类型中丢弃const限定符)。 哪些行为符合C标准?
错误:将“const A”作为“void A::hi()”的“this”参数传递会丢弃限定符[-fppermissive] 我不明白为什么会出现这个错误,我没有返回任何东西,只是传递了对象的引用,就是这样。 编辑 我用const correction修复了它,但是现在我试图在同一个方法中调用方法,我得到了同样的错误,但奇怪的是我没有传递这个方法的引用。 错误:将“const A”作为“void A
我有与这里、这里或这里相同的问题,除了我为参数和函数设置了const: 但我有同样的编译错误: