我简化了这个问题。我想知道为什么它不能编译:
错误消息: <ckeditor [(ngModel)]="textdata"
#myckeditor="ngModel"
name="myckeditor"
required
[config]="ckeConfig"
debounce="500">
</ckeditor>
a.h
undefined reference to 'Foo<int>::j'
a.cpp
#pragma once
template<typename T>
class Foo{
public:
int bar(){
return j;
}
private:
static int j;
};
main.cpp
#include "a.h"
template<typename T>
int Foo<T>::j = 3;
答案 0 :(得分:0)
模板是原因。
template<typename T>
int Foo<T>::j = 3;
无法解析main.cpp
,因为它没有关于a.cpp
的信息。
至于a.cpp
,它不会创建Foo,因为在那里没有使用它。
要使系统正常运行,您需要添加
int Foo<int>::j = 3;
到a.cpp
或
template<typename T>
int Foo<T>::j = 3;
到main.cpp
。
请注意,inline
中C++17
关键字的新用法可能就是您要寻找的东西。