【问题标题】:Passing Vector from one class to another for manipulation将向量从一个类传递到另一个类进行操作
【发布时间】:2013-12-27 04:49:32
【问题描述】:

我想得到向量

std::vector< std::vector<int> > Ticket; 

从一个类(用户)到另一个(游戏),以便操作那里的内容。

我特别需要它在一个函数中(compareNumbers)。

目前在 main.cpp 我有这个代码:

#include "User.h"
#include "Game.h"

int k = game.compareNumbers(user.<int>Ticket);

(为简单起见,省略了不必要的包含和其他代码)

在 User.h 中是向量(公共)的声明,在 User.cpp 中填充了向量。

我怀疑它更复杂,因为它是一个包含向量的向量,但我不确定。

在 Game.cpp 我有

int Game::compareNumbers(std::vector< std::vector<int> > Ticket)
// Some code

我看到的错误是在 main. 但是我怀疑还有更多的错误。

另外我想也许我应该通过引用传递,但我不确定。而且我不确定如何做到这一点,可能还有 const,在 compareNumbers 中,我没有修改向量,只是将其内容与另一个向量的内容进行比较,再次,不确定?

【问题讨论】:

  • 只需传入 user.Ticket。还要使用 const 引用,而不是传入向量。如果您需要修改似乎不是这种情况的向量的内容,请仅使用非常量。编辑:刚刚看到@Dietmar Kuhl 的回答。基本上就是这样。

标签: c++ vector parameter-passing


【解决方案1】:

假设您的 user 有一个成员 Ticket,您可以将此对象传递给您的 Game::compareNumbers() 函数,只需使用

int = game.compareNumbers(user.Ticket);

声明后,这将复制std::vector&lt;std::vector&lt;int&gt; &gt;,但是,这可能不是您想要的。如果您真的只是想查看数字(函数名称表明您愿意),您可以使用 const&amp; 传递对象:

int Game::compareNumbers(std::vector<std::vector<int> > const& Ticker) {
    // ...
}

如果compareNumbers() 确实需要修改它的参数,你可以省略const 但保留引用:没有引用,一个副本被传递和修改,这不会影响原始user.Ticket 对象。

【讨论】:

    猜你喜欢
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多