gpt4 book ai didi

c++ - 错误 : function was not declared in the scope

转载 作者:行者123 更新时间:2023-11-28 02:10:56 25 4
gpt4 key购买 nike

我有一个名为 logs_i 的类,它有一个名为 begin_record 的虚函数;我不得不编写一个名为 counter_logs_t 的新类,它应该有一个计算日志的方法。

这里是counter_logs_t的接口(interface)和实现:

class counter_logs_t : public log_i
{
public:
counter_logs_t(int counter);
void print_counter(void);
void add_counter(void);
virtual void begin_record(void);

private:
int counter;
};

counter_logs_t::counter_logs_t(int counter) : log_i()
{
counter = 0;
}

void counter_logs_t::add_counter(void)
{
counter++;
}

void logs_t::begin_record(void)
{
log_i::begin_record();
add_counter();
}


void counter_logs_t::print_counter(void){
cout<< counter<< endl;
}

int main()
{

counter_logs_t container1();
//some code
container1.print_counter();

return 0;
}

当我尝试构建时出现以下错误:错误:“add_counter”未在范围内声明

最佳答案

这个函数的签名不正确,特别是类名

void logs_t::begin_record(void)

我想你的意思是

void counter_logs_t::begin_record(void)

编辑:

您的第二个问题是您遇到了 the most vexing parse在这条线上

counter_logs_t  container1();

这被解释为声明一个名为 container1 的函数,该函数不接受任何参数并返回一个 coutner_logs_t。事实上,counter_logs_t 没有默认构造函数,唯一的构造函数具有以下签名

counter_logs_t(int counter);

因此,您必须使用 counter 参数构造它。

counter_logs_t container1{0};
counter_logs_t container1 = counter_logs_t(0);

或者做一个默认的构造函数

counter_logs_t::counter_logs_t() : log_i(), counter(0) {}

那你就可以说

counter_logs_t container1;

关于c++ - 错误 : function was not declared in the scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35700263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com