我很难理解如何在C ++中使用8
。我们来举一个简单的例子:
我有这样的事情:
<initializer_list>
让我们说这是我的主要内容:
using namespace std;
class TV{
vector<string> channels;
public:
TV(initializer_list<string> channels){}
}
如何为字符串创建没有默认参数计数的构造函数?
答案 0 :(得分:2)
std::vector
的一个构造函数直接使用std::initializer_list
vector( std::initializer_list<T> init, const Allocator& alloc = Allocator() );
所以你可以在构造函数中初始化
TV(std::initializer_list<std::string> _channels)
: channels(_channels)
{}
另外,你应该避免在一行中声明多个变量,因为你的括号不匹配,它会更明显。
TV x{{"BBC", "CNN"}};
TV y{{"SKYNEWS", "FOX", "CNN"}};
答案 1 :(得分:0)
您的代码运行正常。
当您声明时,TV x({"BBC", "CNN"}), y({"SKYNEWS", "FOX", "CNN"});
中有大括号错位。调整并粘贴下面的代码。它有效。
#include <iostream>
#include <vector>
using namespace std;
class TV{
vector<string> channels;
public:
TV(initializer_list<string> channels1){
channels = channels1;
}
void printSize()
{
cout<<channels.size()<<endl;
}
};
int main(){
TV x({"BBC", "CNN"}), y({"SKYNEWS", "FOX", "CNN"});
x.printSize();
y.printSize();
return 0;
}
The output is
2
3