小编kan*_*nra的帖子

调用构造函数后,为什么initializer_list中的vector <int>的值会发生变化?

我是C ++的新手,正在尝试设置矩阵类。矩阵是从initializer_list包含vector<int>条目的矩阵行中创建的。此类的方法之一应该是get_row(size_t rownumber)。当我从构造函数调用实现的方法时,它将返回正确的结果。但是,当从中调用相同的方法时main(),每行的前两个元素包含一些不应在其中的巨大数字。

我认为问题与指针有关。虽然,我真的找不到在构造函数内部的调用和main内部的调用之间矩阵元素可以覆盖的地方。当我在Eclipse中进入调试模式时,指针似乎指向了预期的地址...

#include <iostream>
#include <vector>
using namespace std;

template<typename T> class myMatrix {
    private:
        initializer_list<vector<int>>::iterator it;
        initializer_list<vector<int>> matrix;
    public:
        myMatrix(initializer_list<T> values) {
        matrix = values;

        vector<int> chosen_row = get_row(1);
        cout << "Called from constructor: ";
        for (unsigned i = 0; i != chosen_row.size(); i++) {
            cout << chosen_row.at(i) << " ";
        }
        }
    vector<int> get_row(size_t x) {
        it = matrix.begin() + x - 1;
        return (*it);
        }
};

int …
Run Code Online (Sandbox Code Playgroud)

c++ vector initializer-list

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

模板类实例之间的类型转换

我目前正在尝试使用c ++样式类型转换。为此,我创建了一个模板类pClass,它接受一些T类型的元素并将其打印出来。

现在,我想(例如)将type的实例转换pClass<char>pClass<int>。但是,非我的类型转换尝试似乎按预期方式工作。

我已经发现它dynamic_cast用于在运行时以及处理虚拟函数/多态类时进行转换,在此情况并非如此。static_cast用于在编译时进行转换。那么,对于我来说,static_cast应该是正确的选择吗?

这里有关stackoverflow的一些主题也有类似的问题,但是仅当处理多个类并在它们之间进行继承时才有类似的问题。不幸的是,我无法真正将它们与我的问题联系起来(例如,模板调用之间的C ++ Casting)。

#include <iostream>

template <typename T>
class pClass {
    public:
    T value;
    pClass(T value) {
        this->value = value;
        std::cout << value << std::endl;
    }
    virtual ~pClass() {}
};

int main() {
    pClass<int> pInt(5);
    pClass<char> pChar('a');
    pClass<float> pFloat(4.2f);

    // pClass<int> pInt2 = static_cast<pClass<int>&>(pChar); //  gives invalid type conversation
    // pClass<int>& pInt3 = dynamic_cast<pClass<int>&>(pChar); // warning: dynamic_cast of ‘pClass<char> pChar’ to ‘class pClass<int>&’ can …
Run Code Online (Sandbox Code Playgroud)

c++ templates casting type-conversion

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