如何在 C++ 模板中使用静态变量

问题描述 投票:0回答:1

我刚刚在学习 C++ 中的模板,我遇到了在模板中使用静态变量的想法。我创建了一个包含三维向量的简单类。我决定将“单位上限”(i、j 和 k)保持为静态,以便使其成为类属性而不是对象属性:

#include <iostream>

using namespace std;

template <class T = int>
class vector
{
    int *arr;
    static string caps;

public:
    vector() {}

    vector(int arr[]) : arr(arr) {}

    void setVector(int arr[])
    {
        this->arr = arr;
    }

    void displayVector()
    {
        cout << "The vector is : " << arr[0] << caps[0] << " + " << arr[1] << caps[1] << " + " << arr[2] << caps[2] << endl;
    }
};

string vector::caps = "ijk";

它抛出一个错误 enter image description here

然后我尝试了一些东西:


template <class T>
string vector::caps = "ijk";

仍然报错。

c++ templates static-variables
1个回答
0
投票

您看到的错误消息表明编译器无法解析对静态成员变量 vector::caps 的引用。这是因为静态成员变量的定义需要用类模板的模板参数来限定

可以通过以下方式定义静态成员变量:

template <class T>
string vector<T>::caps = "ijk";

这里vector::caps显式地用模板参数T限定了静态成员变量caps。

通过此更改,您的类定义应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.