stringstream :: in syntax error

时间:2011-01-30 05:42:46

标签: c++ visual-studio-2010 stringstream

我正在尝试使用stringstream做类似的事情(我简化了我的代码以查明错误):

Token.h

#include <stdio.h>
#include <vector>
#include <sstream>

using namespace std;

class Token {
public:
   static stringstream ss (stringstream::in | stringstream::out);
   static void set_input_string(std::string str);
};

Token.cpp

#include "Token.h"

void Token::set_input_string(std::string str)
{
   ss << str;
}

当我尝试编译时,我得到: 第error C2061: syntax error : identifier 'in'行中的Token.h中的static stringstream ss (stringstream::in | stringstream::out);和2010年的视觉工作室以红色stringstream::in |

突出显示

2 个答案:

答案 0 :(得分:3)

您无法在类定义中初始化非整数值。你应该:

// Token.h
#include <cstdio> // thisis the C++ header
#include <vector>
#include <sstream>

// don't do this, especially not in a header file - function-scope at best
// using namespace std;

class Token {
public:
    static std::stringstream ss; // declare

    // probably want this parameter to be a const-reference
    static void set_input_string(std::string str);
};

// Token.cpp
#include "Token.h"

// define
std::stringstream Token::ss(std::stringstream::in | std::stringstream::out); 

void Token::set_input_string(std::string str)
{
   ss << str;
}

答案 1 :(得分:1)

您无法同时声明和定义成员变量。 ss的定义应该在类声明之外:

class Token {
public:
   static stringstream ss; // declaration
   static void set_input_string(std::string str);
};

stringstream Token::ss (stringstream::in | stringstream::out); // definition in your cpp file