gpt4 book ai didi

c++ - 未定义对 :: 的引用

转载 作者:太空狗 更新时间:2023-10-29 20:15:14 24 4
gpt4 key购买 nike

<分区>

我正在编写一些代码,以便在对网站进行更改时进行标记。我在类中使用静态变量时遇到问题,所以我想在命名空间中声明一个变量,并在进行更改时设置它 ==1。

下面是我编写的一些简化代码来表示问题:

p.h:

#include<iostream>
using namespace std;

#ifndef p_H
#define p_H
namespace testing{

extern int changes_made;

class p
{
public:
void changed();
void print_change();
void print_change_ns();
private:
static int changes;
int info;
};

}
#endif

p.cpp:

 #include "p.h"
#include<iostream>

using namespace testing;

int p::changes=0;

void p::changed(){
p::changes=1;
}

void p::print_change(){
cout << p::changes << endl;
}

void p::print_change_ns(){
if (testing::changes_made == 1){
cout << 1 << endl;
}
else{
cout << 0 << endl;
}
}

主要.cpp:

#include<iostream>
#include"p.h"

using namespace std;
using namespace testing;


int main(){

p test1, test2, test3;
test3.changed();
changes_made=1;

cout << "test1 ";
test1.print_change();
test1.print_change_ns();

cout << "test2 ";
test2.print_change();
test2.print_change_ns();

cout << "test3 ";
test3.print_change();
test3.print_change_ns();

p test4;
cout << "test4 ";
test4.print_change();
test4.print_change_ns();
return 0;
}

我收到以下错误消息:

p.o: In function `testing::p::print_change_ns()':
p.cpp:(.text+0x45): undefined reference to `testing::changes_made'
main.o: In function `main':
main.cpp:(.text+0x9b): undefined reference to `testing::changes_made'
collect2: ld returned 1 exit status

如有任何帮助,我们将不胜感激。我以前有多个声明错误,所以我引入了#ifndef 东西,以及变量前的 extern。

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