为什么这给了我错误C2661:没有重载函数需要2个参数?

时间:2015-08-07 13:01:44

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

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

我正在使用Visual Studio 2012 fyi,每次尝试使用类的对象填充向量时,我都会收到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;
};

起初我认为这可能是一个与包含头文件相关的错误,但我已多次检查它们似乎是正确的所以我不能完全看出我做错了导致这个。

3 个答案:

答案 0 :(得分:1)

停止滥用SELECT isnull(s.years, 'Total') AS Grade, count(*) AS cnt1, c.firstname, c.lastname FROM (SELECT s.years, SUM(count(*)) AS cnt1, c.firstname, c.lastname FROM employees cc INNER JOIN building1 c ON cc.id = c.bldid INNER JOIN members s ON s.id = cc.id WHERE sec.LastName = 'Cook' GROUP BY s.years WITH ROLLUP, c.firstname, c.lastname ORDER BY s.years, c.firstname, c.lastname) AS cnt 。这是动态分配的原因,而不是每个&#34;新的&#34;你做的对象。

您有一个new个对象的容器,而不是Stock个指针,因此将Stock*推入其中是不正确的。在 best ,您将创建一个向同一个动态分配对象填充100个指针的向量! C ++ ain&#t; Java。

所有你需要的是:

new Stock

这些元素将默认构建。

我也冒昧地删除了多余的fs.clear(); // may not need this; depends on prior vector use fs.resize(100); 限定符。

答案 1 :(得分:0)

std::vector<Stock> fs;

您的矢量包含Stock s。

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

但您尝试插入Stock*

在任何情况下,指向同一Stock的一百个指针可能都不好。

答案 2 :(得分:0)

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

std::vector<Stock> fs;

这里有一个对象类Stock的简单向量,因此它应该像:

一样填充
AFTS::fs.assign(100, Stock());