У меня есть стартовый проект, и мне нужно написать собственный распределитель и инструменты для диагностики c. Я создал класс Class
, в котором у меня есть 2 метода для пользовательского распределителя void alloc()
void dealloc()
и для диагностики c tools void evaluate()
.
Теперь я объявил объект test
типа Class
в CustomAllocator.h
и используйте 2 метода для выделения и освобождения памяти без проблем. Но когда я пытаюсь вызвать метод evaluate()
в CustomAllocatorTest.cpp
, я получил сообщение об ошибке компоновщика class Class test(?test@@3VClass@@A) already defined in CustomAllocatorTest.obj
и LNK1169 one or more multiply defined symbols found
.
Class.h
#pragma once
class Class
{
public:
void alloc() { std::cout << "alloc"; }
void dealloc() { std::cout << "dealloc"; }
void evaluate() { std::cout << "evaluate"; }
};
CustomAllocator.h
#ifndef _CUSTOM_ALLOCATOR_H_
#define _CUSTOM_ALLOCATOR_H_
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#include <stdlib.h>
#include "Class.h"
Class test;
#endif // _CUSTOM_ALLOCATOR_H_
CustomAllocator. cpp (#include "stdafx.h" включает в себя "CustomAllocator.h")
#include "stdafx.h"
using namespace std;
int main()
{
test.evaluate();
return 0;
}