我正在尝试为 Cinder 的 C++ 中的 Trigonometry 实用程序编写一个基本的静态类。
这是我的主文件:
#include "cinder/app/App.h"
#include "cinder/app/RendererGl.h"
#include "cinder/gl/gl.h"
//#include "MyStaticClass.h" //this simple include doesn't work...
#include "C:\Users\ALEX\Cinder Projects\LearnLinkage\vc2013\MyStaticClass.h"// so I have to use this stupid absolut path...
using namespace ci;
using namespace ci::app;
using namespace std;
class LearnLinkageApp : public App {
public:
void mouseDown( MouseEvent event ) override;
};
void LearnLinkageApp::mouseDown( MouseEvent event )
{
MyStaticClass::MyStaticFunction();
}
CINDER_APP( LearnLinkageApp, RendererGl )
这是我的静态类文件:
MyStaticClass.h
#pragma once
static class MyStaticClass
{
public:
MyStaticClass();
~MyStaticClass();
static void MyStaticFunction();
};
我的静态类.cpp
#include "MyStaticClass.h"
MyStaticClass::MyStaticClass()
{
}
MyStaticClass::~MyStaticClass()
{
}
static void MyStaticFunction(){
}
我收到此消息错误:错误 4 错误 LNK2019:无法解析的外部符号“public: static void __cdecl MyStaticClass::MyStaticFunction(void)”(?MyStaticFunction@MyStaticClass@@SAXXZ) 在函数“public: virtual void __thiscall LearnLinkageApp: :mouseDown(class cinder::app::MouseEvent)" (?mouseDown@LearnLinkageApp@@UAEXVMouseEvent@app@cinder@@@Z) C:\Users\ALEX\Cinder Projects\LearnLinkage\vc2013\LearnLinkageApp.obj LearnLinkage
我对这个https://en.wikipedia.org/wiki/Translation_unit_%28programming%29 和这个 https://en.wikipedia.org/wiki/One_Definition_Rule做了一些研究
问题似乎是一个静态函数得到未解析的外部符号,你能告诉我更多关于这个吗?理论上可以在cpp的虚函数中调用静态函数吗?
谢谢你的支持