为什么我收到此错误:constexpr'在此处无效

时间:2018-05-14 14:17:18

标签: c++ c++11 visual-studio-2015 constexpr

我有这段代码:

class myClass
{
        constexpr int x = 4;
};

在visual studio 2015上,我收到了这个错误:

'constexpr' is not valid here

为什么我收到此错误?我想要一个const静态变量,我可以在头文件中初始化它。

在下一步中,我想将我的类更改为模板,但此常量与clas的类型无关。

2 个答案:

答案 0 :(得分:8)

static数据成员不能声明为constexpr。使用

class myClass
{
    static constexpr int x = 4;
};

代替。

答案 1 :(得分:1)

  
    

我想要一个const静态变量,我可以在头文件

上初始化它   

如果您的主要关注点是可共享给所有模板类型实例的常量值,那么您只需更改为以下内容:

import { Query } from "react-apollo";
import gql from "graphql-tag";

    const ExchangeRates = () => (
      <Query
        query={gql`
          {
            rates(currency: "USD") {
              currency
              rate
            }
          }
        `}
      >
        {({ loading, error, data }) => {
          if (loading) return <p>Loading...</p>;
          if (error) return <p>Error :(</p>;

          return data.rates.map(({ currency, rate }) => (
            <div key={currency}>
              <p>{`${currency}: ${rate}`}</p>
            </div>
          ));
        }}
      </Query>
    );

如果您关注的是内存空间(尽管它在所有实例之间共享),您可以使用编译预处理解决方案(即#Define X 4)