小编Sou*_*Roy的帖子

在模板类实现中分离.h和.cpp文件

我正在尝试编写一个模板类,可以根据<class>我的传递形成类.问题是我不能在同一个.h文件中声明和定义.在我的项目中,UTF工具只能处理.cpp文件(代码覆盖等).我在博客中看到他们说"添加.cpp而不是.h".这是可取的吗?

Template.h

#ifndef TEMPLATE_H_
#define TEMPLATE_H_

template<class T>
class Template
{
public:
    T Add(T a,T b);
};

#endif /* TEMPLATE_H_ */
Run Code Online (Sandbox Code Playgroud)

Template.cpp

#include "Template.h"

template<class T>
T Template<T>::Add(T a, T b)
{
    return a+b;
}
Run Code Online (Sandbox Code Playgroud)

Main.cpp

#include "Template.cpp" //Is this a good practise? 
#include <iostream>

int main(int argc, char **argv) {
    Template<int> obj;
    std::cout<<obj.Add(3,4)<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

如果这不可行,那么我该如何解决这个问题呢?export

c++ templates

8
推荐指数
2
解决办法
2万
查看次数

将Visual c + +项目导入Eclipse

我有一个可视化c ++解决方案(项目),它是在visual studio 2010上编写的.

我想将该项目作为c ++项目导入Eclipse(JUNO)并查看执行情况.

有人可以一步一步告诉我这可能的解决方案是什么?

我在IBM帮助中看到了示例,但这没有帮助.有人请用hello world项目解释一下.

eclipse visual-c++

6
推荐指数
0
解决办法
3789
查看次数

如何在 CORBA 中指定枚举字段值

我想在 idl 文件中编写一个枚举:

module Media 
{
enum eSpeed
{
    int speed1 = 2000,
    int speed2 = 4000,
    int speed3 = 8000
};
};
Run Code Online (Sandbox Code Playgroud)

但 CORBA 不允许在枚举情况下进行任何赋值。如何解决这个问题?

corba

5
推荐指数
1
解决办法
2644
查看次数

使用 C++ lambda 表达式初始化类成员

我想std::string filePath使用 lambda 表达式初始化一个类成员 ( )。程序编译正常,但没有输出。这里有什么问题?

#include <iostream>
#include <string>

class MyString
{
  public:
  std::string filePath = [this] ()
  {
      return oneStr.append(" two");
  }();
    
  std::string oneStr;
};

int main()
{
  MyString str;
  str.oneStr = std::string(" one");
  printf("%s", str.oneStr.c_str());
}
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

4
推荐指数
1
解决办法
384
查看次数

当超出范围时,堆栈上的局部变量不会被删除

#include <iostream>

int* retPointer()
{
    int x=10; //same as auto int x =10;
    return &x;
}

int main(int argc, char **argv)
{
    std::cout<<"x="<<*retPointer()<<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我返回一个指向要堆叠的局部变量的指针.当我在man()中打印此指针指向的值时,我应该得到一个seg-fault.当我从函数retPointer()返回时,变量x应该超出范围.因此,当尝试访问main()中的值时,我是否应该得到分段错误?我在这里错过了什么吗?

输出= x = 10

c++ undefined-behavior

0
推荐指数
1
解决办法
128
查看次数

无法使用外部类对象访问内部类成员

#include <iostream>

class Outer
{
    int o;
public:
    void setOuter(int o)
    {
        this->o=o;
    }
    class Inner
    {
    public:
        int i;
        int retOuter(Outer *obj)
        {
            return obj->o;
        }
    };
};

int main(int argc, char **argv) {
    Outer::Inner obj;
    obj.i=20;
    std::cout<<"Inner i = "<<obj.i<<std::endl;

    Outer *obj1=new Outer;
    obj1->setOuter(40);
    std::cout<<"Outer o = "<<obj.retOuter(obj1)<<std::endl;

    obj1->Inner::i =50; //Access the inner class members by Outer class object!
}
Run Code Online (Sandbox Code Playgroud)

除了最后一行之外,上面代码中的所有内容都很好.为什么我无法使用外部类对象访问Inner类成员?外部类对象应具有所有公共成员访问权限.class Outer当我创建一个内部类对象时它的行为如何被外部类包含!

c++

0
推荐指数
1
解决办法
439
查看次数

同步两个线程在彼此之间传递事件

我是Windows c ++编程的新手.请参阅下面的代码,我想让两个线程同步.第一个线程应该打印"Hello",然后将控件/事件传递给第二个线程.不知道怎么做.截至目前我正在使用Sleep(1000).但是,如果我不使用Sleep,则会导致未定义的行为.请帮忙...

#include <windows.h>
#include <process.h>
#include <iostream>

void thread1(void*);
void thread2(void*);

int main(int argc, char **argv) {
    _beginthread(&thread1,0,(void*)0);
    _beginthread(&thread2,0,(void*)0);
    Sleep(1000);
}

void thread1(void*)
{
    std::cout<<"Hello "<<std::endl;
}
void thread2(void*)
{
    std::cout<<"World"<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ multithreading

0
推荐指数
1
解决办法
2163
查看次数