我有类似的东西
while(playAgain==true)
{
cout<<"new game"<<endl; //i know 'using namespace std;' is looked down upon
while(playerCard!=21)
{
*statements*
if(decision=='n')
{
break
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我想要打破两个循环时,那个中断只会突破第一个while循环
我想在for_each()函数中初始化一个指针向量:
#include <stdlib.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
class Cow{
public:
Cow(){ _age = rand()% 20; }
int get_age() { return _age;}
private:
int _age;
};
void add_new(Cow* cowp)
{
cowp = new Cow;
}
int main()
{
srand(time(NULL));
const int herd_size=10;
vector<Cow*> herd(herd_size);
for_each(herd.begin(), herd.end(),add_new);
cout << "Age: " << herd[0]->get_age() << endl; // line 27
}
Run Code Online (Sandbox Code Playgroud)
但是,我在第27行得到了运行时"分段错误"错误.牧群向量似乎未被启用.为什么?
我想将我的print functor的第一个参数绑定到0:
#include<iostream>
#include<functional>
using namespace std;
class Print : public std::binary_function<int,int,void>{
public:
void operator()(int val1, int val2)
{
cout << val1 + val2 << endl;
}
};
int main()
{
Print print;
binder1st(print,0) f; //this is line 16
f(3); //should print 3
}
Run Code Online (Sandbox Code Playgroud)
上面的程序(基于C++ Primer Plus的示例)无法编译:
line16 : error : missing template arguments before ‘(’ token
Run Code Online (Sandbox Code Playgroud)
怎么了?
我不想使用C++ 11也不想提升功能.
编辑:为简单起见,operator()返回类型已从bool更改为void
我有一个A类和一个简单的(非常有限的)迭代器A_iterator指向这个类并成为它的朋友:
#include<vector>
#include<iostream>
using namespace std;
class A_iterator{
public:
A_iterator(int index) : _index(index) {}
int operator*();
private:
int _index;
};
class A{
friend class A_iterator;
public:
typedef A_iterator iterator;
A() { _elems.push_back(1); _elems.push_back(2); }
private:
static vector<int> _elems; //line 19
};
vector<int> A::_elems; // line 22
int A_iterator::operator*()
{
return A::_elems[_index]; //line 26
}
int main()
{
A a;
A::iterator it(0);
cout << *it << endl; //line 33
}
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,我不希望_elems是静态的.如果我将从第19行删除静态关键字并删除第22行,那么我应该如何修改第26行?第33行无法更改.
我有这个函数从文件中读取文本并将其添加到字符串中,现在奇怪的是,如果它是一个短文本,它可以正常工作.但如果它的文本较长,则字符串变为空,那么解决此问题的任何帮助都会受到赞赏.
string inlasning(string namn)
{
string filString, temp;
ifstream filen(namn.c_str());
if(!filen.good())
{
cout << "Otillganglig fil" << endl;
filString = "ERROR";
return filString;
}
else
{
while(!filen.eof())
getline(filen, temp);
filString.append(temp);
}
filen.close();
return filString;
}
Run Code Online (Sandbox Code Playgroud)