从'char'转换为非标量类型'Vector <char>'错误抛出未知原因</char>

时间:2010-12-21 08:12:30

标签: c++ vector g++ compiler-errors

错误抛出未知原因

#include "std_lib_facilities.h"

int main()  
{  
    vector<char> shape = ('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a');  
    return(0);  
}

带有向量的一行抛出了我以前从未见过的错误,也无法弄明白......

:: g ++ TicTacToe.cpp -o TTT
TicTacToe.cpp:在函数int main()':
TicTacToe.cpp:5: error: conversion from
char'中向非标量类型`Vector'请求

在每个tic-tac-toe框中看到它将以_开头然后转到X或O,我这样做没有图形库所以它的终端图形。

4 个答案:

答案 0 :(得分:2)

如果所有值都相同,您可以使用std::vector的以下构造函数:

std::vector<char> shape( 9, 'a' );

如果部分或全部值不同,您可以使用另一个构造函数,如下所示:

static const char ini[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i' };
std::vector<char> shape( ini, ini+sizeof(ini) );

或者

static const char ini[] = "abcdefghi";
std::vector<char> shape( ini, ini+sizeof(ini)-1 );

答案 1 :(得分:1)

这种向量初始化在当前的C ++中是不可能的。您可以使用:

vector<char> shape(9, 'a');

将产生所需的效果(创建一个大小为9的向量,其中所有元素都设置为'_')。

如果boost是一个选项,Boost.Assign提供了您最初想要实现的语法,尽管在这种特殊情况下使用适当的std::vector构造函数已足够了。

答案 2 :(得分:0)

vector没有这样的构造函数。查看有效的constructors

答案 3 :(得分:0)

vector类具有以下构造函数:

explicit vector( size_type n, const T& value= T(), const Allocator&=Allocator());

使用你可以做的:

vector<char> shape (9,'a');