#include <iostream>
#include <memory>
class Base
{
public:
Base() {}
};
class Derived : public Base
{
public:
Derived() {}
Derived(std::initializer_list<std::pair<int, std::shared_ptr<Base>>>) {}
};
int main(int argc, char ** argv)
{
auto example = new Derived({
{ 0, std::make_shared<Derived>() }
});
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它的工作原理(实时预览)正常,但是当我尝试使用std::make_shared与std::initializer_list作为参数,我得到了错误:
auto example = new Derived({
{ 0, std::make_shared<Derived>({
{ 0, std::make_shared<Derived>() }
}) }
});
Run Code Online (Sandbox Code Playgroud)
正如您在实时预览中看到的那样.
错误:功能参数太多......
它仅适用于我这样做(实时预览):
auto example = new Derived({
{ 0, …Run Code Online (Sandbox Code Playgroud) 我正在创建一个类,我想知道如何创建类似于std::map或std::vector样式的构造函数.
std::map<std::string, std::string> map = {
{"foo", "bar"},
{"biz", "buz"},
{"bez", "boz"}
};
Run Code Online (Sandbox Code Playgroud)
不同之处在于我不希望我的班级要求接受的类型,就像std::map那样.
std::map<std::string, std::string>
Run Code Online (Sandbox Code Playgroud)
我希望我的班级接受这种风格的论点:
{
{"foo", "bar"},
{"biz", "buz"},
{"bez", "boz"}
};
Run Code Online (Sandbox Code Playgroud)
但是有定义的类型.(std :: string,Typer)
'Typer'是一个我将作为值插入的类std::map.
让我们这样说:我们将创建一个需要跨平台的库,我们选择GCC作为编译器,它在Linux上运行得非常好,我们需要在Windows上编译它,我们让MinGW完成工作.
MinGW尝试实现一种在Windows上编译C++的本机方式,但它不支持像mutex和等一些功能threads.
我们有MinGW-W64是支持这些功能的MinGW的分支,我想知道哪一个使用?知道GCC是最常用的C++编译器之一.或者最好在Linux上使用MSVC(VC++),在Linux上使用GCC,并使用CMake处理独立编译器?
提前致谢.
我有这样的方法:
std::map<std::string, int> container;
void myMap(std::initializer_list<std::pair<std::string, int>> input)
{
// insert 'input' into map...
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样调用这个方法:
myMap({
{"foo", 1}
});
Run Code Online (Sandbox Code Playgroud)
我如何转换我的自定义参数并插入到地图中?
我试过了:
container = input;
container(input);
Run Code Online (Sandbox Code Playgroud)
但是不要工作,因为地图的参数只是,std::initializer_list并且那里没有std::pair.
谢谢你们.
我想知道如何知道循环中std :: string的结束?
例如:
while(string.eof()) {}
Run Code Online (Sandbox Code Playgroud)
记住它与std :: string一起使用
谢谢你们.
我正在尝试这样做:
#include <iostream>
std::string message = "Hello\r\"world\"";
int main() {
if (message[5] == '\\') {
switch (message[6]) {
case 'r':
std::cout << "\\r escape..." << std::endl;
break;
case '"':
std::cout << "\" escape..." << std::endl;
break;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道逻辑上是正确的,但是如果你理解我想要做什么,你会注意到我想知道字符串是否存在转义.如果角色是逃脱,请执行上面看到的(开关).
那可能吗?谢谢.