小编Art*_*rov的帖子

Visual Studio 2017 中的限制标头中未声明的标识符

在编译我的项目时,这看起来非常原始

#include <iostream>
int main() {
  std::cout << 1;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到很多类似的错误

E0020 标识符“FLT_RADIX”未定义 smo c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.24930\include\limits 201

E0020 标识符“FLT_MIN”未定义 smo c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.24930\include\limits 1084

所有错误均参考限制文件。正如此处提到的,这可能是对 C 库的引用存在问题, Visual studio 2015 在创建简单的测试控制台程序时给了我错误, 但明确定义从 Windows 套件到库的路径并没有解决问题。

visual-studio-2017

6
推荐指数
0
解决办法
642
查看次数

googletest中的参数化和共享资源测试

我使用googletest框架尝试创建一个继承的Fixture类,以进行参数化和共享资源测试。

class FixtDBadminConnShared : public ::testing::Test {
  public:
    static void SetUpTestCase() {
      shared_conn_ = new ::DB::DB_connection();
    }
    static void TearDownTestCase() {
      delete shared_conn_;
    }
    static ::DB::DB_connection * shared_conn_;
    };
::DB::DB_connection * FixtDBadminConnShared::shared_conn_ = nullptr;

class FixtDBadminConnExec :public FixtDBadminConnShared, public ::testing::TestWithParam<string> 
  {
  protected:
    using FixtDBadminConnShared::SetUpTestCase;
    using FixtDBadminConnShared::TearDownTestCase;

    void SetUp() override {
      query_ = GetParam();
    }
    string query_;
  };       
Run Code Online (Sandbox Code Playgroud)

尝试调用测试:

TEST_P(FixtDBadminConnExec, SelectWithoutParam) {
 //do smth
}
INSTANTIATE_TEST_CASE_P(QueriesOrbital0param, FixtDBadminConnExec,
::testing::Values( string{ "SELECT * from my_table;" }));
Run Code Online (Sandbox Code Playgroud)

我收到下一个错误

Error   C2594   'return': ambiguous conversions from …
Run Code Online (Sandbox Code Playgroud)

c++ templates static-members googletest

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

通过指向它的指针调用模板方法

我有下一个错误:

C2064术语不评估为采用LINE 33的1个参数的函数

它无法调用函数"param.c1(x)".但为什么?似乎它不能推断函数"c1_1_order_()"取1参数或我在函数"config_1_order()"中做错误的赋值.

文件"Header.h"

#include <vector>
using std::vector;

class TMA {
private:
  double(*p)(double);

  template<class U>
  struct SLAU_params {
  private:
    TMA * obj;

    U c1_1_order_(double x) {
      return  obj->p(x);
    }

    void config_1_order() {
      c1 = &TMA::SLAU_params<U>::c1_1_order_;
    }
  public:
    SLAU_params(TMA * obj) :obj(obj) {
      config_1_order();
    }

    U(TMA::SLAU_params<U>::* c1)(double);
  };
public:
  TMA(double(*p)(double)) :p(p) {}

  template<class U>
  vector<U> TMA_solve(U h) {
    double x = h;
    SLAU_params<U> param(this);
    param.c1(x);
    vector <U> rez;
    return rez;
  }
};
Run Code Online (Sandbox Code Playgroud)

"Source.cpp"

#include "Header.h"
double p(double x) { return …
Run Code Online (Sandbox Code Playgroud)

c++ templates function-pointers

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