gpt4 book ai didi

c++ - 在 .cpp 文件中使用条件类型

转载 作者:行者123 更新时间:2023-11-30 00:50:04 25 4
gpt4 key购买 nike

我有一个模板类和一个依赖于模板的类型。如何在我的 .cpp 文件中使用这种类型?

对象.hpp:

using pair_d = std::pair<double, double>;
using pair_f = std::pair<float, float>;

template <typename T>
class Object {
public:
static_assert(std::is_same<T, float>::value ||
std::is_same<T, double>::value, "Type not allowed");

using pair = typename std::conditional<std::is_same<T, float>::value,
pair_f, pair_d>::type;

// function using the conditional type
const pair doSomething(T, T) const;
}

对象.cpp

#include "object.hpp"

template <typename T>
const pair Object<T>::doSomething(T t1, T t2) const {
// ....
}

但是我得到:

error: unknown type name 'pair'

如何在我的 .cpp 文件中使用“对”类型?

最佳答案

您的代码段中有四个问题:

  1. 参数以相同的名称(T t, T t)命名,使这些名称不同。

  2. 您已将模板声明/定义拆分为一个 cpp 和一个头文件,请不要这样做。

  3. 您忘记了定义(在声明中)返回类型的 const 限定符。

  4. 您缺少依赖名称的 typename 关键字。

你的定义应该是:

template <typename T>
const typename Object<T>::pair Object<T>::doSomething(T t1, T t2) const {
// stuff
}

或(避免依赖名称):

template <typename T>
auto Object<T>::doSomething(T t1, T t2) const -> const pair {
// stuff
}

关于c++ - 在 .cpp 文件中使用条件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26258636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com