小编CJA*_*LEE的帖子

构造函数中的无限循环,不带或不带

我在这里做了一个测试,但输出是一个没有结束的循环,我不知道为什么.

实际上,我正在做另一个测试,但是当我写这个时,我不明白循环是如何发生的.它反复输出"ABC".

#include <map>
#include <string>
#include <iostream>

class test
{
public:
   std::map <int, int> _b;
   test();
   test (std::map<int, int> & im);
   ~test();
   };

test::test()
{
  std::cout<<"abc";
  _b.clear();
  _b[1]=1;
  test(_b);
}

test::test(std::map <int, int>& im)
{
   std::cout<<im[1];
}

test::~test() {};

int main ()
{
   test a;  
}
Run Code Online (Sandbox Code Playgroud)

c++ recursion constructor const

61
推荐指数
1
解决办法
3905
查看次数

静态函数在C++中调用非静态函数

我有一个类::

Class Test
{
  public:
  void Check(){//dosomething};
  static void call(){//I want to call check()};
};
Run Code Online (Sandbox Code Playgroud)

因为call()是一个静态成员,所以它不能调用非静态函数,所以我认为在call()中使用Check()是创建Test指针然后指向Check(),但我认为它是不好,有更好的方法吗?我可以在静态函数中重写所有内容,所以我不需要再次调用Check(),但我想要的是重用Check()中的代码并避免重复代码.

c++ static

11
推荐指数
1
解决办法
2万
查看次数

二进制兼容更改返回类型C++

我有一个关于二进制兼容性的问题.我有一个类A,它包含一个公共方法foo()和一个属性字符串_foo;

const string foo() {return _foo;}
Run Code Online (Sandbox Code Playgroud)

当我改为

const string& foo(){return _foo;}
Run Code Online (Sandbox Code Playgroud)

它仍然是二进制兼容的吗?谢谢你的帮助!

c++ binary-compatibility

5
推荐指数
2
解决办法
228
查看次数

如何在单独的文件中使用`yy_scan_string(const char *str)`(由 lex yacc 生成)

我想在 my 中使用YY_BUFFER_STATE yy_scan_string(const char *str)和其他功能,我做了以下事情:yyparse()main.cpp

extern "C"{
extern YY_BUFFER_STATE yy_scan_string(const char *str);
}
Run Code Online (Sandbox Code Playgroud)

但是有一个错误error:YY_BUFFER_STATE' does not name a type`,然后我做了:

extern yy_buffer_state;
typedef yy_buffer_state *YY_BUFFER_STATE;
extern int yyparse();
extern YY_BUFFER_STATE yy_scan_buffer(char *, size_t);
Run Code Online (Sandbox Code Playgroud)

但是同样的问题,怎么办,谢谢,非常感谢您的帮助!!

这是 main.cpp 文件。#include "main.h"

 #include <string.h>
 extern "C"{void scan_string(const char* str);}
 int yyparse();
 void test::getvalue(int& var)
 {
    if (var!=0)
        std::cout<<"True"<<std::endl;
    else
        std::cout<<"False"<<std::endl;
  }

  int main(){
     std::string str="T+F";
     //how to send str as an Input to parse?

     yyparse();
     return 0;
   }
Run Code Online (Sandbox Code Playgroud)

c++ redirect yacc lex bison

4
推荐指数
1
解决办法
4065
查看次数

如何计算Spirit中的布尔表达式

在c ++中找到了一个关于布尔转换器,*布尔表达式(语法)解析器的非常好的例子

我现在在想的是做一个进一步的步骤,转换(!T|F)&TF或者0,这样计算一个很长的布尔表达式非常方便.

有一些使用精神的例子吗?我所做的是首先制作一个计算器,然后让它计算'(T +!F*T)',它等于(T||!F&&T)但是当我输入时(),有一个错误.如何修改?非常感谢!

#include <iostream>  
#include <stack>  
#include <boost/lexical_cast.hpp>  
#include <boost/config/warning_disable.hpp>  
#include <boost/spirit/include/qi.hpp>  
#include <boost/spirit/include/phoenix.hpp>  

using namespace std;  
namespace phoenix = boost::phoenix;  
namespace qi = boost::spirit::qi;  
namespace ascii = boost::spirit::ascii;  

struct calculator  
{  
    bool interpret(const string& s);  
    void do_neg();  
    void do_add();  
    void do_sub();  
    void do_mul();  
    void do_div();  
    void do_number(const char* first, const char* last);  
    int val() const;  
private:  
    stack<int> values_;  
    int *pn1_, n2_;  
    void …
Run Code Online (Sandbox Code Playgroud)

c++ boost-spirit boolean-operations

4
推荐指数
1
解决办法
2482
查看次数

使用 Boost 的布尔表达式

我试图简单地在这个答案中找到精神解析器:

删除xor运算符和逻辑。我看不到怎么做,我尝试使用

expr_  = or_.alias();

or_  = (and__ >> "or"  >> or_ )[ _val = phx::construct<binop<op_or >>(_1, _2) ]     | and_   [ _val = _1 ];
and_ = (not_ >> "and" >> and_) [ _val = phx::construct<binop<op_and>>(_1, _2) ] | not_   [ _val = _1 ];
not_ = ("not" > simple       ) [ _val = phx::construct<unop <op_not>>(_1)     ] | simple [ _val = _1 ];
Run Code Online (Sandbox Code Playgroud)

对于规则定义,但我收到一条我不明白的神秘编译器消息:

test\test.cpp `boost::spirit::_2' cannot appear in a constant-expression
Run Code Online (Sandbox Code Playgroud)

如果有人能阐明一些观点,我将不胜感激。

这是日志:

compiler: …
Run Code Online (Sandbox Code Playgroud)

c++ parsing boost boost-spirit boost-spirit-qi

2
推荐指数
1
解决办法
1723
查看次数

在一个String C++中检查几个信号

我想在一个字符串中搜索一个不等于"(",")","!","&","|",";"的位置.如果我使用if(str[1] != "!" && str[1] != "(" ...),它太长了...有什么我可以用来使这个简单吗?

c++ string

2
推荐指数
2
解决办法
77
查看次数