Мой код похож на этот, но проблема точно такая же: я получаю "неопределенную ссылку на` Test1 :: v "в Test1. cpp и в Test2. cpp при компиляции программа в VSCode. Что я делаю не так? Я немного новичок в C ++, поэтому я только что загрузил расширение, которое автоматически сделало меня проектом на C ++. Когда я запускаю программу с помощью Ctrl + Shift + B, я получаю эту ошибку, но когда я делаю это с расширением Code Runner, он не обнаруживает файлы. cpp.
// Test1.h
#include <iostream>
#include <vector>
using namespace std;
#ifndef TEST1_H
#define TEST1_H
class Test1{
public:
Test1();
static vector<Test1> v;
int a;
};
#endif
//Test1.cpp
#include "Test1.h"
Test1::Test1(){
a = 2;
v.push_back(*this);
}
//Test2.h
#include <iostream>
#include <vector>
using namespace std;
#ifndef TEST2_H
#define TEST2_H
class Test2{
public:
Test2();
double var;
};
#endif
//Test2.cpp
#include "Test2.h"
#include "Test1.h"
Test2::Test2(){
var = 5;
Test1::v[0].a += var;
}
//main.cpp
#include <iostream>
#include "Test1.h"
#include "Test2.h"
using namespace std;
int main(int argc, char *argv[])
{
cout << "Hello world!" << endl;
}