以下是否有效?:
template<typename T> class C { C1<C2<T>> someMember; };
Run Code Online (Sandbox Code Playgroud) class someClass
{
public:
int* ptr2Int;
};
Run Code Online (Sandbox Code Playgroud)
Is this a valid class (yes it compiles)? Provided one assigns a value to ptr2Int before dereferencing it, is the class guaranteed to work as one would expect?
我怎样才能完成以下建议?:
template<typename T>
class Base{...};
...
class Derived : public Base<int>{...};
Run Code Online (Sandbox Code Playgroud) 我收到一个g ++错误(对'SomeClass :: SomeClass(int)'和'SomeClass ::〜SomeClass'的未定义引用),其中包含以下内容:
/*
* SomeClass.h
*
*/
#ifndef SOMECLASS_H_
#define SOMECLASS_H_
class SomeClass
{
public:
SomeClass();
SomeClass(int someInt);
~SomeClass();
};
#endif /* SOMECLASS_H_ */
/*
* SomeClass.cpp
*
*/
#include "SomeClass.h"
SomeClass::SomeClass()
{
}
SomeClass::SomeClass(int someInt)
{
}
SomeClass::~SomeClass()
{
}
/*
* main.cpp
*
*/
#include "SomeClass.h"
int main()
{
SomeClass::SomeClass someObject(1);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 应该SomeClass*initialEl = new SomeClass [5]; 必须编译,假设SomeClass没有非公开声明的默认构造函数?考虑:
/*
* SomeClass.h
*
*/
#ifndef SOMECLASS_H_
#define SOMECLASS_H_
class SomeClass
{
public:
SomeClass(int){}
~SomeClass(){}
};
#endif /* SOMECLASS_H_ */
/*
* main.cpp
*
*/
#include "SomeClass.h"
int main()
{
SomeClass* initialEl = new SomeClass[5];
delete[] initialEl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) c++ memory-management class dynamic-memory-allocation dynamic-arrays
以下程序使用g ++编译,但在运行时崩溃:
class someClass
{
public:
int const mem;
someClass(int arg):mem(arg){}
};
int main()
{
int arg = 0;
someClass ob(arg);
float* sample;
*sample = (float)1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以下程序不会崩溃:
int main()
{
float* sample;
*sample = (float)1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)