通过查看以下代码,我们注意到初始化名为的静态数据成员非常容易cnt
:
template<typename T> struct Base { static int cnt; };
template<typename T> int Base<T>::cnt = 0;
int main() { }
Run Code Online (Sandbox Code Playgroud)
无论如何,我正在与variadic_template
静态数据成员斗争,因为我无法用它们来制作它.请考虑以下代码:
template<typename...> struct Base;
template<> struct Base<> { static int cnt; };
int main() { }
Run Code Online (Sandbox Code Playgroud)
首先,我尝试了最明显的事情,至少是对我来说最明显的事情:
template<typename... T> int Base<T...>::cnt = 0;
Run Code Online (Sandbox Code Playgroud)
它回来了error: template definition of non-template ‘int Base<T>::cnt’
,我立刻意识到我的尝试确实没有意义.那就是说,之后我有点疑惑,因为对我来说这是不对的,这是正确的语法.
我尝试了以下方法:
template<> int Base<>::cnt = 0;
// ... and ...
template<> int Base::cnt = 0;
Run Code Online (Sandbox Code Playgroud)
随着错误error: template definition of non-template ‘unsigned int Base<T>::cnt’ …
我注意到我们家没有这个简单的问题,所以我会发布它.
一种说类型是内置类型,如int,long,char等,而class是用户定义的类.
这样对吗?
这句话发生了什么:
auto iter = first;
Run Code Online (Sandbox Code Playgroud)
为什么iter++
可以很好地工作,因为大家都知道,first
是const&
,
template<typename iteratorT, typename valueT>
iteratorT find(const iteratorT& first, const iteratorT& last,const valueT& value)
{
auto iter = first;
while(iter != last && *iter != value) iter++;
return iter;
}
Run Code Online (Sandbox Code Playgroud)
为什么?
我需要在向量中存储两种类型的对象,这两种类型几乎没有任何共同之处.
将它们存储在向量中之后,我想迭代该向量并执行操作,具体取决于类型.
到目前为止我的想法:
多态性.矫枉过正,对我帮助不大,因为我可能会这样做:
if(dynamic_cast<T1>() != nullptr) {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)合并两种类型(方法和字段)并添加一个布尔值,表示其类型1或2.
这两种模式对我来说都显得十分笨拙,有一个完全简单的解决方案,我根本就看不到.
第一种类型是这样的:
struct PatternMatch {
int length;
int indexInDict;
}
Run Code Online (Sandbox Code Playgroud)
第二个:
struct NoMatch {
std::string rawChars;
}
Run Code Online (Sandbox Code Playgroud) 以下代码会导致多个错误
typedef struct
{
char name[20];
int vertices_qty;
int polygons_qty;
Vector3D vertex[MAX_VERTICES];
Triangle polygon[MAX_POLYGONS];
TexCoord mapcoord[MAX_VERTICES];
int id_texture;
obj_type, *obj_type_ptr;
}
Run Code Online (Sandbox Code Playgroud)
特别是最后一行:
obj_type, *obj_type_ptr;
Run Code Online (Sandbox Code Playgroud)
当我obj_type
用鼠标悬停时,它显示:
此声明没有存储类或类型说明符
还有一个警告:
未标记的'struct'声明,没有符号
所有的这是一个内commons.h
定义几个stucts如头文件vector2d
,vector3d
,material
,等等等等为一个程序,使用OpenGL
我需要做些什么才能使错误消失?
我有一个巨大的问题,我试图建立一些代码,我从另一个函数调用我的函数与结构在其中,但我不知道我是否已经混淆了自己,但我现在很丢失所以我会感谢som的帮助.基本上我试图做的是生成1到4之间的随机数,从那里我做了一些if语句,在if语句中我调用了我的函数.但是,它不能很好地工作. 它是最后一段错误的代码.功能"randomize()"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DIAMONDS 0
#define CLUBS 1
#define HEARTS 2
#define SPADES 3
#define JACK 11
#define QUEEN 12
#define KING 13
#define ACE 1
#define COLOR_SIZE 13
#define NR_OF_SUITS 4
#define DECK_SIZE 52
int random_card;
struct Card
{
int suit;
int value;
};
void diamonds(struct Card *cardDeck);
void spades(struct Card *cardDeck);
void clubs(struct Card *cardDeck);
void hearts(struct Card *cardDeck);
void swapCards(struct Card *cardA, struct Card *cardB);
void shuffleCards(struct Card *cardDeck);
void randomize(); …
Run Code Online (Sandbox Code Playgroud) 请参阅此处的对象计数器示例:为什么它不会从非模板继承.为什么反击应该是模板?class counter
template <typename T>
struct counter
Run Code Online (Sandbox Code Playgroud) 我添加什么 Javascript 来定义 res?谢谢!
错误信息:
参考错误:未定义 res
代码:
app.get('/', function(request, response) {
res.sendFile(path.join(__dirname, '/public', 'index.html'));
})
Run Code Online (Sandbox Code Playgroud)