小编boo*_*y81的帖子

在CMake中设置路径(C++,ImageMagick)

我正在尝试将一些东西添加到使用CMake开发的更大的C++项目中.在我添加的部分中,我想使用Magick ++.

如果我只编译我的小示例程序

#include <Magick++.h>

int main()
{
  Magick::Image image;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

g++ -o example example.cxx
Run Code Online (Sandbox Code Playgroud)

它失败了,因为它找不到"Magick ++.h".

如果我正在使用

g++ -I /usr/include/ImageMagick -o example example.cxx
Run Code Online (Sandbox Code Playgroud)

我得到"未定义的引用"错误.

如果我按照http://www.imagemagick.org/script/magick++.php上的说明进行编译并使用

g++ `Magick++-config --cxxflags --cppflags` -o example example.cxx `Magick++-config --ldflags --libs`
Run Code Online (Sandbox Code Playgroud)

有用.

现在:如何将其合并到使用CMake的大型项目中?我如何更改CMakeLists.txt?

c++ imagemagick cmake

8
推荐指数
1
解决办法
3926
查看次数

必须使用指针来抽象类导致困难

我这里的第一个问题......

我想用一个抽象类,A我从中派生类B(和类B2,B3...).我明白为了统一处理它们,我必须使用指向基类的指针,所以这里是类型的变量A*.

在下面的例子中,我想填写函数中aa的类型.因为我只能用引用和变量在年底失去他们的范围,我无法访问的条目的成员中了.vector<A*>ffaamain

什么可以解决这个问题?

#include <vector>
#include <iostream>


class A {
    public:
        virtual int getVar(int, int) = 0;
};

class B : public A {
    public:
        B(std::vector<std::vector<int> > var) : var_(var) {};
        int getVar(int i, int j) { return var_[i][j]; }
    private:
        std::vector<std::vector<int> > var_;
};

void f(std::vector<A*>& aa) {
    std::vector<std::vector<int> > var(1, std::vector<int>(1));
    var[0][0] = 42;

    B b(var);

    aa.push_back(&b);
}

int main() …
Run Code Online (Sandbox Code Playgroud)

c++ abstract-class pointers

3
推荐指数
1
解决办法
5836
查看次数

标签 统计

c++ ×2

abstract-class ×1

cmake ×1

imagemagick ×1

pointers ×1