【问题标题】:Why is this giving me error C2661:no overloaded function takes 2 arguments?为什么这会给我错误 C2661:没有重载函数需要 2 个参数?
【发布时间】:2015-08-07 13:01:44
【问题描述】:

错误 C2661:'Stock::Stock':没有重载函数需要 2 个参数

我正在使用 Visual Studio 2012,仅供参考,每次尝试用类的对象填充向量时,我都会收到 C2661 错误:

void AFTS::createSys() {
    AFTS::fs.assign(100, new Stock());
    // the error occurs when calling the assign() function
} 

这是保存向量的类:

class AFTS {
public:
    std::vector<Stock> fs;
    void createSys();
    void addStock(Stock stock, int price);
    void deleteStock(Stock stock);
    int stockGetPrice(Stock stock);
    void sellStock(Stock stock, int price);
    void buyStock(Stock stock, int min, int max);
}; 

这是我试图填充向量的类:

class Stock {
public:
    int price;
    std::string tick;
};

起初我认为这可能是与包含头文件有关的错误,但我检查了多次,它们似乎是正确的,所以我不太明白我做错了什么导致这种情况。

【问题讨论】:

  • 无法阅读文档,主要是...
  • 我真的不确定你是如何从这段代码中得到 that 错误的。哦,好吧。
  • @Quentin:这段代码究竟是在哪里尝试使用两个参数调用 Stock 构造函数?
  • @LightnessRacesinOrbit 哦,我没有注意到消息的一部分很奇怪。我无法使用 MSVC 2013 (error C2664: 'void std::vector&lt;Foo,std::allocator&lt;_Ty&gt;&gt;::assign(unsigned int,const Foo &amp;)' : cannot convert argument 2 from 'Foo *' to 'const Foo &amp;') 重现它。 MSVC 2012 错误?
  • @Quentin OP 错误的可能性更大

标签: c++ class visual-studio-2012 vector


【解决方案1】:

停止滥用new。这是针对动态分配的,而不是针对您创建的每个“新”对象。

您有一个包含 Stock 对象的容器,而不是 Stock* 指针,因此将 new Stock 推入其中是不正确的。 最好,您将创建一个向量,其中包含 100 个指向同一个动态分配对象的指针! C++ 不是 Java。

你只需要这个:

fs.clear();      // may not need this; depends on prior vector use
fs.resize(100);

这些元素将是默认构造的。

我还冒昧地删除了多余的 AFTS:: 限定符。

【讨论】:

  • 我们去...完全忘记了您不使用 new 创建对象。
【解决方案2】:
std::vector<Stock> fs;

您的向量包含Stocks。

AFTS::fs.assign(100, new Stock());

但是您尝试插入Stock*

无论如何,一百个指向同一个Stock 的指针可能是坏的。

【讨论】:

    【解决方案3】:

    我认为问题在于您尝试插入指针而不是对象:

    std::vector<Stock> fs;
    

    这里有一个对象类Stock的简单向量,所以它应该填充为:

    AFTS::fs.assign(100, Stock());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 2012-06-12
      相关资源
      最近更新 更多